gpt4 book ai didi

python - MySQL 选择产品的所有组件

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:13 25 4
gpt4 key购买 nike

我在一家汽车公司工作。我们有一张包含产品组件的产品表。

这是我们一个产品的 TreeView 。产品的一部分通过装配操作制成E40。 enter image description here

这是我们 MySQL 数据库的 TableView :

enter image description here

我们希望获得产品所有组件的结果。像这样:

'E40-1', 'E40-2', 'E40-3', 'E40-4', 'E40-5', 'E40-6', 'E40-6-1', 'E40-6-2'

所以结果的长度必须是 8。

我尝试了一些 MySQL 查询,但它们不起作用。

我尝试过的查询:

select alt_bilesen from urunler_seviyeler where parcano in (select parcano from urunler_seviyeler where parcano="E40")

这只给了我们产品的六个部分。没有 E40-6-1 也没有 E40-6-2。我也试过:

select alt_bilesen from urunler_seviyeler where parcano in (select alt_bilesen from urunler_seviyeler where parcano="E40")

这只给了我们产品的最低部分。 E40-6-1 和 E40-6-2。不是其他部分。

顺便说一句,我们可以使用Python。如果我们想使用 Python,我认为我们必须用一些 for 循环、while 循环等来调用它。你能给我一个建议吗?谢谢。

最佳答案

MySQL 不支持“分层”查询。可以使用多个查询将该功能模拟到有限数量的级别。查询的结果可以与 UNION ALL 操作相结合。

获取按特定顺序返回的行可能会出现问题,具体取决于您需要返回行的实际条件。

第一级:

SELECT t1.alt_bilesen
FROM urunler_seviyeler t1
WHERE t1.parcano = 'E40'

第二层:

SELECT t2.alt_bilesen
FROM urunler_seviyeler t1
JOIN urunler_seviyeler t2
ON t2.parcano = t1.alt_bilesen
WHERE t1.parcano = 'E40'

第三级:

SELECT t3.alt_bilesen
FROM urunler_seviyeler t1
JOIN urunler_seviyeler t2 ON t2.parcano = t1.alt_bilesen
JOIN urunler_seviyeler t3 ON t3.parcano = t2.alt_bilesen
WHERE t1.parcano = 'E40'

第四层:

SELECT t4.alt_bilesen
FROM urunler_seviyeler t1
JOIN urunler_seviyeler t2 ON t2.parcano = t1.alt_bilesen
JOIN urunler_seviyeler t3 ON t3.parcano = t2.alt_bilesen
JOIN urunler_seviyeler t4 ON t4.parcano = t3.alt_bilesen
WHERE t1.parcano = 'E40'

可以将查询与UNION ALL 集合运算符结合起来

( SELECT t1.alt_bilesen
FROM urunler_seviyeler t1
WHERE t1.parcano = 'E40'
)
UNION ALL
( SELECT t2.alt_bilesen
FROM urunler_seviyeler t1
JOIN urunler_seviyeler t2
ON t2.parcano = t1.alt_bilesen
WHERE t1.parcano = 'E40'
)
UNION ALL
( SELECT t3.alt_bilesen
FROM urunler_seviyeler t1
JOIN urunler_seviyeler t2 ON t2.parcano = t1.alt_bilesen
JOIN urunler_seviyeler t3 ON t3.parcano = t2.alt_bilesen
WHERE t1.parcano = 'E40'
)
UNION ALL
( SELECT t4.alt_bilesen
FROM urunler_seviyeler t1
JOIN urunler_seviyeler t2 ON t2.parcano = t1.alt_bilesen
JOIN urunler_seviyeler t3 ON t3.parcano = t2.alt_bilesen
JOIN urunler_seviyeler t4 ON t4.parcano = t3.alt_bilesen
WHERE t1.parcano = 'E40'
)
ORDER BY 1

通过在每个查询中包含一个文字值,可以包含一个额外的“级别”列。要按返回列以外的其他方式进行排序,您需要在每个查询中包含一些额外的表达式...

关于python - MySQL 选择产品的所有组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267563/

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