[英]mySQL multiple join select results as columns in single row
我昨天一直在努力处理这个查询。 我将联接简化到最低限度,因为它产生了非常奇怪的结果。
现在它正在执行我“期望”的操作,但不执行我想要的操作...理想情况下,如果它们是event_attendee_days中的行,则我希望返回一行day_1,day_2和day_3。
SELECT event_attendees.id, event_attendees.name, event_account.name AS company,
case event_attendee_days.days_id
when '1' then "25th"
ELSE "-"
end AS day_1,
case event_attendee_days.days_id
when '2' then "26th"
ELSE "-"
end AS day_2,
case event_attendee_days.days_id
when '3' then "27th"
ELSE "-"
end AS day_3,
event_account.email, event_account.telephone, acct_type, acct, address1, address2, address3, address4, postcode, business_type, business_desc, signup
FROM event_attendees
JOIN event_account ON event_attendees.acct_id = event_account.id
LEFT JOIN event_attendee_days ON event_attendees.id = event_attendee_days.user_id
WHERE event_attendees.id = "1019"
ORDER BY event_attendees.acct_id
当前产生(在此示例中,我跳过了不需要的文件。)
id | day_1 | day_2 | day_3
1019 | 25th | - | -
1019 | - | 26th | -
1019 | - | - | 27th
但是我想要
id | day_1 | day_2 | day_3 | ...
1019 | 25th | 26th | 27th | ...
1020 | - | - | 27th | ...
等等。我有一些不同的看法,这是我到目前为止最接近的。 只需将结果压缩为一行,而不会丢失信息:-)
谢谢
试试看:
SELECT
id,
MAX(day_1) AS day_1,
MAX(day_2) AS day_2,
MAX(day_3) AS day_3
FROM
event
GROUP BY
id;
不过,您仍然需要手动输入所有日期。
希望能帮助到你
PS:在我的小提琴上,该表被命名为“事件”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.