I'm wanting to only reference the first result back from my users table, but I'm getting the following error
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 CONCAT_WS(' ',employeeFirstName,employeeLastName) AS courseAdded FROM vwt_user' at line 6
My SQL is as follows
CREATE OR REPLACE VIEW vwt_courses AS
SELECT tw_tblcourse.*, tw_tblprovider.providerName, CONCAT_WS(' ',vwt_userse.employeeFirstName,vwt_userse.employeeLastName) AS courseEditor, tw_tblprovider.providerAdd1, tw_tblprovider.providerAdd2, u_tbltowns.townName AS providerTown, tw_tblprovider.providerPostCode
FROM tw_tblcourse
JOIN tw_tblprovider ON tw_tblprovider.providerID = tw_tblcourse.courseProviderID
LEFT JOIN u_tbltowns ON u_tbltowns.townID = tw_tblprovider.providerTownID
JOIN vwt_users AS vwt_usersa ON vwt_usersa.userID = (SELECT TOP 1 CONCAT_WS(' ',employeeFirstName,employeeLastName) AS courseAdded FROM vwt_users WHERE userID=tw_tblcourse.courseAddedID)
LEFT JOIN vwt_users AS vwt_userse ON vwt_userse.userID = tw_tblcourse.courseEditedID
I've been trying to follow the answer at SQL Server: How to Join to first row but it doesn't work, or else I've done it wrong :)
I've also tried: doesn't apply to MySQL so doesn't work
CREATE OR REPLACE VIEW vwt_courses AS
SELECT tw_tblcourse.*, tw_tblprovider.providerName, CONCAT_WS(' ',vwt_usersa.employeeFirstName,vwt_usersa.employeeLastName) AS courseAdded, CONCAT_WS(' ',vwt_userse.employeeFirstName,vwt_userse.employeeLastName) AS courseEditor, tw_tblprovider.providerAdd1, tw_tblprovider.providerAdd2, u_tbltowns.townName AS providerTown, tw_tblprovider.providerPostCode
FROM tw_tblcourse
JOIN tw_tblprovider ON tw_tblprovider.providerID = tw_tblcourse.courseProviderID
LEFT JOIN u_tbltowns ON u_tbltowns.townID = tw_tblprovider.providerTownID
CROSS APPLY (SELECT TOP 1 vwt_users.employeeFirstName, vwt_users.employeeLastName FROM vwt_users WHERE vwt_users.userID = tw_tblcourse.courseAddedID) vwt_usersa
LEFT JOIN vwt_users AS vwt_userse ON vwt_userse.userID = tw_tblcourse.courseEditedID
Attempt 3: This one is accepted but isn't limiting for some reason
CREATE OR REPLACE VIEW vwt_courses AS
SELECT tw_tblcourse.*, tw_tblprovider.providerName, CONCAT_WS(' ',vwt_usersa.employeeFirstName,vwt_usersa.employeeLastName) AS courseAdded, CONCAT_WS(' ',vwt_userse.employeeFirstName,vwt_userse.employeeLastName) AS courseEditor, tw_tblprovider.providerAdd1, tw_tblprovider.providerAdd2, u_tbltowns.townName AS providerTown, tw_tblprovider.providerPostCode
FROM tw_tblcourse
JOIN tw_tblprovider ON tw_tblprovider.providerID = tw_tblcourse.courseProviderID
LEFT JOIN u_tbltowns ON u_tbltowns.townID = tw_tblprovider.providerTownID
JOIN vwt_users AS vwt_usersa ON vwt_usersa.userID = (SELECT userID FROM vwt_users WHERE userID = tw_tblcourse.courseAddedID LIMIT 1)
LEFT JOIN vwt_users AS vwt_userse ON vwt_userse.userID = (SELECT userID FROM vwt_users WHERE userID = tw_tblcourse.courseEditedID LIMIT 1)
vwt_users example:
╔════╦═══════╦══════╦══════╦══════╗
║ ID ║ FIRST ║ LAST ║ COMP ║ LIVE ║
╠════╬═══════╬══════╣══════╣══════╣
║ 1 ║ JOHN ║ DOE ║ 1 ║ 1 ║
║ 1 ║ JOHN ║ DOE ║ 2 ║ 1 ║
╚════╩═══════╩══════╩══════╩══════╝
Actual fields are user ID, Username, Employee ID, First Name, Last Name, Email, User Level, Company Id, Company Name, User Active. Of these, only the Employee (ID, First and Last Name) and Company (ID and Name) details change