首页 > 解决方案 > 具有两个单独连接的 Mysql 查询

问题描述

有谁知道这个问题的解决方案?有 3 个表:ordersorder_groupsstores
我想列出订单,下订单的商店的名称以及订单将在哪里交付。

我将from_store_id, 和保留to_store_idorder_groups表中

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

这就是我所说的:

表订单
id group_id 名称 madeup_id
1 11 约翰尼现金 1
2 12 比利鲍勃 1
LEFT JOIN order_groups on order_groups.id = orders.group_id
表 order_groups
id from_store_id to_store_id
11 55 56
12 56 55            
餐桌商店
id 商店名称
55 本店
56 那家店
我正在寻找的结果是:
   名称 from_store to_store
1.johhny兑现thisstore,thatstore
2.billy bob thatstore,这家商店

我还没有声明:

选择
orders.name,类似于 from_store,类似于 to_store
来自订单
左加入 order_groups on order_groups.id = orders.group_id

以某种方式加入 order_groups.from_store_id = stores.id 上的商店

在哪里 orders.madeup_id = 1

知道如何选择商店名称并将其加入查询吗?

还有一个问题。我实际上也想在一个查询中列出来自不同表的两种订单,我在这个结构的正确轨道上吗?

SELECT a,b FROM a LEFT JOIN b ON b.something=a.something WHERE something
联合所有
SELECT a,b FROM c LEFT JOIN c ON c.something=a.something WHERE something

标签: mysqljoin

解决方案


你只需要加入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

推荐阅读