gpt4 book ai didi

mysql - 具有多个条件的加入

转载 作者:行者123 更新时间:2023-11-29 13:43:11 26 4
gpt4 key购买 nike

我的整个查询有点复杂,所以我会尝试只展示您需要了解我的问题的内容,我正在从数据库中获取票证,它显示标题、创建者、负责人票证和最后的更新者,对于创建者和负责人,我在 tickets_users.users_id 中找到他们的 ID 以及他们的类型 1 或 2,具体取决于他们是否是创建者票证或者如果他们负责的话,对于票证本身的标题和所有信息,表格被命名为tickets,现在对于用户,他们的ID,他们的名字等,它是users

所以我的查询如下所示:

SELECT
tickets.id,
tickets.name,
GROUP_CONCAT(
CASE WHEN tickets_users.type = 1 THEN
CONCAT(users.firstname, ' ', users.realname)
END) AS creator,
GROUP_CONCAT(
CASE WHEN tickets_users.type = 1 THEN
CONCAT(tickets_users.users_id)
END) AS creator_id,
GROUP_CONCAT(
CASE WHEN tickets_users.type = 2 THEN
CONCAT(users.firstname, ' ', users.realname)
END) AS in_charge,
GROUP_CONCAT(
CASE WHEN tickets_users.type = 2 THEN
CONCAT(tickets_users.users_id)
END) AS in_charge_id,
tickets.date,
tickets.priority,
tickets.date_mod,
tickets.status,
tickets.users_id_lastupdater,
MAX(CASE WHEN tickets.users_id_lastupdater = users.id
THEN CONCAT(users.firstname, ' ', users.realname)
END) AS last_updater,
tickets.content
FROM
tickets
JOIN tickets_users ON tickets_users.tickets_id = tickets.id
JOIN users ON users.id = tickets_users.users_id
WHERE tickets.id = ?");

我的问题是JOIN users ON users.id = Tickets_users.users_id它对于负责人和创建者来说效果很好,但如果不负责的人回复或修改票证,他将不会出现在“最后修改者”中,因为 last_updater ID 位于表 tickets 中。我尝试使用 JOIN users ON (users.id = Tickets_users.users_id AND , glpi_tickets.users_id_lastupdater) 来加入,但没有成功。有什么想法吗?

最佳答案

ON users.id IN (tickets_users.users_id, tickets.last_updater)

You'd need to add the test AND users.id = tickets_users.users_id to your CASE statements

工作了,谢谢eggyal !

关于mysql - 具有多个条件的加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com