gpt4 book ai didi

MySql通过分组表疯狂连接

转载 作者:行者123 更新时间:2023-11-29 21:34:50 25 4
gpt4 key购买 nike

我有一个具有以下设置的数据库结构:

po: id, stockNumber, factoryId, other columns
order: id, stockNumber, factoryId, other columns
stock_number: id, stockNumber, groupId
factory: id, name, groupId

这里重要的部分是stock_number/factory 表。 groupId 列只是一个整数,如果表中的两行或更多行具有相同的值,则它们的库存号/工厂被视为相同。通常这用于同一产品的不同尺寸。

我想做的是编写一个查询,通过stock_number和工厂组将“order”连接到“po”,这样我就可以找到没有匹配po的订单。工厂也必须以同样的方式进行匹配。

如果我心里有一个特定的库存号/工厂,但我想更新它以查询整个订单表,我就会有这个查询:

SELECT id
FROM order
WHERE
styleNumber IN (SELECT a.stockNumber FROM stock_number a INNER JOIN stock_number b ON a.groupId = b.groupId or a.id = b.id WHERE b.stockNumber = '123')
AND factoryId IN (SELECT a.submitter_id FROM submitter a INNER JOIN submitter b ON a.groupId = b.groupId OR a.submitter_id = b.submitter_id WHERE b.SUBMITTER_ID = 'alpha');

编辑:我提出了这个查询,我认为它可能是正确的。它只加入库存号,所以还没有做工厂。任何人都可以确认我是否朝着正确的方向前进:

SELECT *
FROM order o
LEFT JOIN stock_number s_o ON o.stockNumber = s_o.stockNumber
LEFT JOIN stock_number s_p ON s_o.groupId = s_p.groupId
LEFT JOIN po p ON s_p.stockNumber = p.stockNumber
WHERE p.id IS NULL;

最佳答案

只需加入所有表即可。

select o.id
FROM order AS o
JOIN stock_number AS sn ON sn.stockNumber = o.stockNumber
JOIN submitter AS su ON ON o.factoryId = su.submitter_id

关于MySql通过分组表疯狂连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35003383/

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