gpt4 book ai didi

mysql - 这个 MySQL 查询(格式化左连接)有什么问题?

转载 作者:行者123 更新时间:2023-11-30 00:06:48 27 4
gpt4 key购买 nike

我有一个查询如下:

SELECT 
staff_names.staff_ID AS sid
staff_names.name AS name,
staff_names.rec_type AS rec_type,
prod_staff.specialized AS specialized,
compspec.name AS compspec_name
FROM staff_names JOIN prod_staff USING (staff_ID)
LEFT JOIN (prod_staff_compspec JOIN company_list USING (comp_ID)) compspec
USING (prod_ID, staff_ID, role_ID)
WHERE prod_staff.role_ID = 2
AND prod_staff.prod_ID = 27
AND prod_staff.asst = 'n'
AND episode IS NOT NULL
ORDER BY name

按原样运行此命令表示“compspec”别名附近存在错误。删除它并将 SELECT 子句中的“compspec”更改为“company_list”不会返回任何行,即使它应该返回具有给定值的 1。左连接似乎是问题所在,但我不知道它应该如何格式化。

prod_staff 表具有 prod_ID、staff_ID 和 role_ID 字段。 prod_staff_compspec 有这些和一个 comp_ID 字段。 prod_staff 可能有也可能没有匹配的 prod_staff_compspec 行,但 prod_staff_compspec 始终有匹配的 company_list 行。

我想要做的是检索与 prod_staff 表中给定 role_ID 和 prod_ID 关联的所有员工姓名的列表,以及company_list 表中的公司名称(如果 prod_staff_compspec 表中存在指向此类的链接)只有一小部分人有)。

最佳答案

切换到ON以定义表关系。 LEFT JOIN (prod_staff_compspec JOIN company_list USING (comp_ID)) compspec 已切换为 2 left join

select a.staff_id sid, a.name, a.rec_type, b.specialized, d.name compspec_name
from staff_names a
join prod_staff b on a.staff_id = b.staff_id
left join prod_staff_compspec c on b.prod_id = c.prod_id and b.staff_id = c.staff_id and b.role_id = c.role_id
left join company_list d on c.comp_id = d.comp_id
where b.role_id = 2 and b.prod_id = 27 and b.asst = 'n' and episode is not null
order by a.name;

关于mysql - 这个 MySQL 查询(格式化左连接)有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24471829/

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