gpt4 book ai didi

mysql - 如何获取m中的多个条件:n relations with multiple joins?

转载 作者:行者123 更新时间:2023-11-29 06:30:09 24 4
gpt4 key购买 nike

我必须编写一个复杂的查询来获取 MySQL 中具有多个条件的产品,并坚持多个条件的关系。

数据库结构是根据Typo3构建的。目前我有 4 个具有多个条件的连接。一切工作正常,但我的 SQL 的最后一行是问题所在。但我找不到任何解决方案。

SELECT p.uid
FROM tx_myext_domain_model_product p
JOIN tx_myext_domain_model_productwirkung w
ON p.uid = w.product
JOIN sys_category_record_mm ck
ON p.uid = ck.uid_foreign
JOIN sys_category_record_mm cc
ON p.uid = cc.uid_foreign
JOIN sys_category_record_mm cw
ON w.uid = cw.uid_foreign
WHERE p.season IN(1,'')
AND p.type = "herbizid"
AND ck.uid_local = 2
AND ck.tablenames = "tx_myext_domain_model_product"
AND ck.fieldname = "culture"
AND cc.tablenames = "tx_myext_domain_model_product"
AND cc.fieldname = "chemicals"
AND cw.tablenames = "tx_myext_domain_model_productwirkung"
AND cw.uid_local IN (2, 395, 257)
AND w.grad = 6;

# and wirkung with cw.uid_local = 2 should have w.grad = 6
# and wirkung with cw.uid_local = 395 should have w.grad = 6
# and wirkung with cw.uid_local = 257 should have w.grad in range from 1 to 6

“productwirkung”应具有类别 2、395 和 257,而类别 2 和 395 的“productwirkung”应具有等级 6。

我知道,最后一行我什么也得不到......

编辑

我无法添加 w.grad = 6,因为该产品也应该具有类别 257 且 grad 1 - 6 的 Productwirkung。一个产品与 Productwirkung 具有多种关系。因此,如果有一个产品,productwirkung 2 的 grad = 6、productwirkung 395 的 grad = 6 和 Productwirkung 257 的 grad = 3 我想要这个产品。如果我要求 ... cw.uid_local IN (2, 395, 257) AND w.grad = 6 该产品将不会被选择,因为 Productwirkung 257 没有 w.grad = 6。

最佳答案

假设 uid_local 是唯一的,根据定义它不能同时是 2395

我猜你想去

  ...
AND ((`cw`.`uid_local` = 2 AND `w`.`grad` = 6) OR (`cw`.`uid_local` = 395 AND `w`.`grad` = 6));

编辑

由于在两个子表达式中您都在检查 w.grad = 6 这也可能被简化为

  ...
AND w.grad = 6
AND (cw.uid_local = 2 OR cw.uid_local = 395)

或者进一步简化为

  ...
AND w.grad = 6
AND cw.uid_local IN (2, 395)

关于mysql - 如何获取m中的多个条件:n relations with multiple joins?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56755658/

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