gpt4 book ai didi

mysql - sql内连接不适用于内连接

转载 作者:行者123 更新时间:2023-11-29 18:20:31 25 4
gpt4 key购买 nike

我有客户、商品、制造、订单、库存等表格。请参阅 http://www.oninit.com/manual/informix/english/docs/gn7382/4366.pdf

我想获取订购了Smith公司生产的产品的每个人(以及他们居住的城市和州)的名字和姓氏。包括描述(来自库存表)。

如果我执行第一部分

select c.fname, c.lname, c.city, c.state from customer c join orders o using (customer_num)
join items i using(order_num)
join manufact m using(manu_code) where m.manu_name = 'Smith' ;

我得到了 8 条正确的记录,我还想从库存表中获得这些记录的描述,所以我在库存表上创建了一个联接,例如

select c.fname, c.lname, c.city, c.state, s.description from customer c join orders o using (customer_num)
join items i using(order_num)
left join (manufact m join stock s on m.manu_code=s.manu_code) on m.manu_code = i.manu_code where m.manu_name = 'Smith';

现在,它给了我 24 条记录,这是我没想到的。 如何编写嵌套查询以仅获取 8 条记录?

库存架构enter image description here

最佳答案

从stock表中可以看到,一个manu_code有多个stock_numm.manu_name = 'Smith'

对应的manu_code有3个 stock_num

这就是您的查询返回 8*3 = 24 行的原因。

要获得适当的结果,您可以

select c.fname, c.lname, c.city, c.state, s.description
from customer c
join orders o using (customer_num)
join items i using (order_num)
join manufact m using (manu_code)
join (select description from stock group by manu_code) AS s ON s.manu_code = m.manu_code
where m.manu_name = 'Smith'

关于mysql - sql内连接不适用于内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46623872/

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