[英]How to add multiple AND conditions on same columns on a LEFT JOIN query
[英]LEFT JOIN on multiple columns and conditions
我有兩張桌子,一張用於訂單,一張用於產品
ORDERS TABLE
+----------+-----------+--------+---------------------+----------+----------+---------------------+--------+
| order_id | order_by | status | created_at | product1 | product2 | delivery_date | pickup |
+----------+-----------+--------+---------------------+----------+----------+---------------------+--------+
| 1 | Maria | 0 | 2020-07-19 00:00:00 | 1 | 3 | 2020-07-17 00:00:00 | 0 |
| 2 | Joao | 0 | 2020-07-20 00:00:00 | 2 | 0 | 2020-07-20 00:00:00 | 0 |
| 3 | Jose | 1 | 2020-07-20 00:00:00 | 3 | 0 | 2020-07-20 00:00:00 | 0 |
| 4 | Matias | 0 | 2020-07-19 23:50:40 | 1 | 3 | 2020-07-19 00:00:00 | 0 |
| 5 | Matias | 0 | 2020-07-19 23:50:40 | 1 | 3 | 2020-07-19 00:00:00 | 0 |
| 6 | Joaozinho | 0 | 2020-07-19 00:00:00 | 1 | 3 | 2020-07-22 00:00:00 | 0 |
+----------+-----------+--------+---------------------+----------+----------+---------------------+--------+
PRODUCTS TABLE
+----+-----------+-------+
| id | name | price |
+----+-----------+-------+
| 1 | Produto 1 | 11 |
| 2 | Produto 2 | 22 |
| 3 | Produto 3 | 33 |
| 4 | Produto 4 | 44 |
| 5 | Produto 5 | 55 |
+----+-----------+-------+
EXPECTED OUTPUT
+----------+-----------+--------+---------------------+----------+----------+---------------------+--------+-----------+----------+-----------+----------+
| order_id | order_by | status | created_at | product1 | product2 | delivery_date | pickup | p1_name | p1_price | p2_name | p2_price |
+----------+-----------+--------+---------------------+----------+----------+---------------------+--------+-----------+----------+-----------+----------+
| 1 | Maria | 0 | 2020-07-19 00:00:00 | 1 | 3 | 2020-07-17 00:00:00 | 0 | Produto 1 | 11 | Produto 3 | 33 |
| 2 | Joao | 0 | 2020-07-20 00:00:00 | 2 | 0 | 2020-07-20 00:00:00 | 0 | Produto 2 | 22 | null | null |
| 3 | Jose | 1 | 2020-07-20 00:00:00 | 3 | 0 | 2020-07-20 00:00:00 | 0 | Produto 3 | 33 | null | null |
| 4 | Matias | 0 | 2020-07-19 23:50:40 | 1 | 3 | 2020-07-19 00:00:00 | 0 | Produto 1 | 11 | Produto 3 | 33 |
| 5 | Matias | 0 | 2020-07-19 23:50:40 | 1 | 3 | 2020-07-19 00:00:00 | 0 | Produto 1 | 11 | Produto 3 | 33 |
| 6 | Joaozinho | 0 | 2020-07-19 00:00:00 | 1 | 3 | 2020-07-22 00:00:00 | 0 | Produto 1 | 11 | Produto 3 | 22 |
+----------+-----------+--------+---------------------+----------+----------+---------------------+--------+------+-----------+-------+------------------+
我需要在訂單表中的每個產品(product1、product2..)和具有不同名稱(product1_name、product2_name..)的價格列上左連接
select o.*, p1.name, p1.price
from orders o
inner join products p1 on p1.id=o.product1
添加 product2 應該不是那么難,並且留作練習......
您需要兩個join
products
表:
select
o.*,
p1.name p1_name,
p1.price p1_price,
p2.name p2_name,
p2.price p2_price
from orders o
left join products p1 on p1.id = o.product1
left join products p2 on p2.id = o.product2
如果product1
始終可用,您可以將第一個left join
轉換為inner join
,這會使查詢稍微更有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.