带有两个单独联接的MySQL查询

时间:2018-11-15 15:05:22

标签: mysql join

有人知道这个问题的解决方案吗? 共有3个表格:订单 order_groups 商店
我想列出订单,以及下订单的商店名称以及要下达订单的商店的名称。

我将from_store_idto_store_id保留在order_groups表中

列出这些订单很简单,我只需将 order_groups 加入 orders ,然后选择名称from_shop_idto_shop_id,但是问题是我想要商店的名称而不是ID,并且商店的名称放置在不同的表(商店)中

我在说什么:


Table orders
id  group_id    name            madeup_id
1     11        johnny cash         1
2     12        billy bob           1
LEFT JOIN order_groups on order_groups.id = orders.group_id
Table order_groups
id   from_store_id   to_store_id
11     55               56
12     56               55            
Table stores
id    store_name
55     thisstore
56     thatstore
The result im looking for is:
   name         from_store   to_store
1.johhny cash   thisstore, thatstore
2.billy bob     thatstore, thisstore

我尚未发表的声明:


SELECT 
orders.name, something as from_store, something as to_store
FROM orders
LEFT JOIN order_groups on order_groups.id = orders.group_id

somehow join stores on the order_groups.from_store_id = stores.id

WHERE orders.madeup_id = 1

有什么想法如何选择商店名称并将其与查询联系起来?

还有一个问题。我实际上也想在一个查询中从不同的表中列出两种订单,即时消息是否具有这种结构?


SELECT a,b FROM a LEFT JOIN b ON b.something=a.something WHERE something 
UNION ALL
SELECT a,b FROM c LEFT JOIN c ON c.something=a.something WHERE something

1 个答案:

答案 0 :(得分:1)

您只需要加入同一张桌子2次!

SELECT 
orders.name, fromStore.store_name as from_store, toStore.store_name as to_store
FROM orders
LEFT JOIN order_groups on order_groups.id = orders.group_id
left join stores fromStore on the order_groups.from_store_id = fromStore.id
left join stores toStore on the order_groups.to_store_id = toStore.id
WHERE orders.madeup_id = 1