2012-04-21 160 views
12

我使用此查詢:MySQL查詢聯接三個表

SELECT a.sales_id, d.bus_title, a.cat_id 
FROM tbl_sales a 
INNER JOIN tb_category b ON a.cat_id = b.cat_id 
INNER JOIN tbl_business d ON d.bus_id = a.bus_id 

產生這樣的結果:

sales_id | bus_title  |cat_id 
----------|----------------|------------ 
1  | Business 1  | 6 
2  | Business 12 | 12 
3  | Business 123 | 25 

我改變了場CAT_ID到一個名爲tb_sales_category新表包含的字段sales_category_idsales_idcat_id。我怎樣才能通過加入這個表來編寫新的查詢,獲得與上面相同的結果?

我對數據庫很陌生,需要幫助。在新表tb_sales_category這是sales_category_id

SELECT a.sales_id, d.bus_title, s.cat_id 
FROM tbl_sales a 
INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id 
INNER JOIN tbl_business  d ON a.bus_id = d.bus_id 
INNER JOIN tb_category  b ON s.cat_id = b.cat_id 

的想法很簡單,第一場正在爲代理鍵,它有什麼做的:在此先感謝

回答

12

試試這個另外兩張桌子之間的關係。然後我們來到另外兩個字段,分別是sales_id,cat_id,這些你應該映射到關係的另外兩個方面。

你可以在新的架構不Join tb_category b ON a.cat_id = b.cat_id becouse我們不再有a.cat_id,並且這裏是新表tb_sales_category作用,通過兩個結合面,一個與INNER JOIN tb_category b ON s.cat_id = b.cat_id和其他與INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id我們應該做插入。

希望這是有道理的。

+1

這也工作得很好,感謝 – 2012-04-21 09:04:56

+1

也感謝您的解釋,這將幫助我在我的自我學習過程 – 2012-04-21 09:08:04

3

我不內心一個很大的風扇連接,以便試試這個:

SELECT a.sales_id, a.cat_id, c.bus_title 
FROM tb_sales_category a, tb_sales b, tbl_business c 
WHERE a.sales_id = b.sales_id 
AND b.bus_id = c.bus_id 
+2

何不在地球上你喜歡INNER JOIN嗎? – liquorvicar 2012-04-21 09:03:59

+0

@ gimg1謝謝,這是服務於此目的 – 2012-04-21 09:04:06