[英]MySQL Inner Join Query Multiple Tables
我正在嘗試合並一些表格,以下是布局示例:
命令
user_id=7 pricing id=37
產品_定價
id=37 product_id=33
產品展示
id=33 name=test product
的SQL
SELECT *
FROM orders
INNER JOIN products_pricing
ON orders.pricing_id = products_pricing.id
INNER JOIN products
ON products_pricing.product_id = products.id
WHERE orders.user_id = '7' ");
列表
id=233 user_id=7 url=test.com
使用此SQL,我得到一個輸出,該輸出為我提供了user_id為7的所有產品,它將在while循環中列出每個產品的名稱。 但是,當我為名為Listings的表添加另一個INNER JOIN時,該表具有一個user_id列,我需要為匹配的每一行獲取一個url,以便我可以將產品名稱與該URL進行超鏈接,同時我也得到了Listings表中包含的所有內容作為上面的工作內容。 我做錯了或者遺漏了一些東西。 我花了幾個小時試圖弄清楚,但仍得到相同的結果。 誰能幫我嗎?
嘗試這個:
SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id = pp.id
INNER JOIN products AS p ON pp.product_id = p.id
INNER JOIN listings AS l ON l.user_id = o.user_id
WHERE o.user_id ='7'
AND l.id = 233
AND l.url = 'test.com';
對於您在問題中發布的樣本數據,這將為您提供:
| ID | NAME | URL | USER_ID | PRICING_ID |
------------------------------------------------------
| 33 | testproduct | test.com | 7 | 37 |
是的,可以使用INNER聯接本身完成此操作,並在select語句中獲取select列。
SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id = pp.id
INNER JOIN products AS p ON pp.product_id = p.id
INNER JOIN listings AS l ON l.user_id = o.user_id
WHERE o.user_id ='7'
AND l.id = 233
AND l.url = 'test.com';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.