【发布时间】:2015-10-01 19:05:16
【问题描述】:
我在 MySQL DB 中有 3 个表:orders、items 和 item_to_orders。最后一个表 item_to_orders 通过 item_id 和 order_id 索引将订单和商品联系在一起。
订单:
order_id order_name order_status
1 Test 0
2 Test2 1
项目:
item_id item_name
1 item1
2 item2
item_to_order
order_id item_id
1 1
2 2
我需要从 items 表中选择一个 item_id,该表在 item_to_order 中没有分配有 order_status=0 的订单 表。它可以有任何其他订单(其中 order_status != 0)分配给它或根本没有订单。
更新:我试图使用这个查询,但它似乎没有给我所有正确的结果(我添加了 LIMIT,因为我只需要 1 项那种)。
SELECT ei.item_id from items ei
LEFT JOIN items_to_orders eio ON ei.item_id=eio.item_id
WHERE NOT EXISTS
(select * from orders o where o.order_id = eio.order_id and o.order_status=0)
ORDER BY ei.item_id LIMIT 1
【问题讨论】:
-
所以你只想在不存在某种顺序的情况下选择一个项目。你尝试了什么?你在哪里失败了?
-
你的最终结果应该是什么?
-
在我的示例中,我的最终结果应该是 item_id,它的名称中没有 order_status=0 的订单 - 所以在这种情况下,我希望结果为 2(满足该要求的 item_id)
-
@Viceromag:你有没有尝试过任何事情并被卡住了,或者你只是想让别人为你工作?你得到我的提示了吗?
-
@Thorsten Kettner 是的,我得到了你的提示,我正在尝试这样的事情 - SELECT ei.item_id from items ei LEFT JOIN items_to_orders eio ON ei.item_id=eio.item_id where not exists (select * 来自订单 o 其中 o.order_id = eio.order_id 和 o.order_status=0) ORDER BY ei.item_id LIMIT 1