获取错误:1241(21000):操作数应包含1列?

时间:2017-03-21 20:25:23

标签: mysql sql database

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。

我想回答的问题是:

"哪些员工和志愿者参加什么活动以及他们的工作角色是什么。包括他们是否符合急救资格。还提供名字和姓氏以及他们的联系电话和活动的开始日期/时间。"

这个错误我一直在网上看了看但似乎无法解决它。

2 个答案:

答案 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