SELECT CONCAT(Staff.fName, ' ', Staff.lName) AS 'Name', Staff.jobRole AS 'Job', Volunteer.firstAid AS 'First Aid?',(Volunteer.fName, ' ', Volunteer.lName) AS 'Name', Staff.contactNo AS 'Phone number', Volunteer.contactNo AS 'Phone number', Event.eventID, Event.eventName AS 'Event Name', Event.startDateTime AS 'Start Date/Time'
FROM EventStaff
JOIN Staff
ON Staff.staffID = EventStaff.staffID
JOIN Event
ON Event.eventID = EventStaff.eventID
JOIN EventVolunteer
ON EventVolunteer.eventID = Event.eventID
JOIN Volunteer
ON EventVolunteer.volunteerID = Volunteer.volunteerID
ORDER BY Event.startDateTime;
所以我试图对我的表进行查询,涉及3 5个不同的表(2个化合物),这些表是:员工,事件,志愿者,EventStaff和EventVolunteer。
我想回答的问题是:
"哪些员工和志愿者参加什么活动以及他们的工作角色是什么。包括他们是否符合急救资格。还提供名字和姓氏以及他们的联系电话和活动的开始日期/时间。"
这个错误我一直在网上看了看但似乎无法解决它。
答案 0 :(得分:0)
缺少 CONCAT 。您也可以使用 CONCAT_WS('',field1,field2)
SELECT
CONCAT(Staff.fName, ' ',
Staff.lName) AS 'Name',
Staff.jobRole AS 'Job',
Volunteer.firstAid AS 'First Aid?',
CONCAT(Volunteer.fName, ' ',
Volunteer.lName) AS 'Name',
Staff.contactNo AS 'Phone number', Volunteer.contactNo AS 'Phone number', Event.eventID, Event.eventName AS 'Event Name', Event.startDateTime AS 'Start Date/Time'
FROM EventStaff
JOIN Staff
ON Staff.staffID = EventStaff.staffID
JOIN Event
ON Event.eventID = EventStaff.eventID
JOIN EventVolunteer
ON EventVolunteer.eventID = Event.eventID
JOIN Volunteer
ON EventVolunteer.volunteerID = Volunteer.volunteerID
ORDER BY Event.startDateTime;
答案 1 :(得分:0)
你可以这样做。只需确保2个选择的stamements具有相同数量的列。希望这可以进一步帮助你。
SELECT 'Staff Member' AS N, Staff.fName + ' ' + Staff.lName AS Name, Event.Id, Event.eventName, Event.startDateTime
FROM Staff
INNER JOIN EventStaff
ON Staff.staffId = EventStaff.staffId
INNER JOIN Event
ON Event.eventId = EventStaff.eventId
UNION ALL
SELECT 'Volunteer' AS N, Volunteer.fName + ' ' + Volunteer.lName AS Name, Event.Id, Event.eventName, Event.startDateTime
FROM Volunteer
INNER JOIN EventVolunteer
ON Volunteer.staffId = EventVolunteer.staffId
INNER JOIN Event
ON Event.eventId = EventVolunteer.eventId