2012-09-29 55 views
2

好吧,我有兩個表MYSQL連接一個表到另一個單個表多次最佳途徑

一是業務

id 
name 
telephone 
primary_category 
secondary_category 
tertiary_category 

另一臺是

id 
name 
parent_id 

現在在這種情況下,企業必須擁有主要/次要和可選的第三類,這是唯一的w AY對這一

SELECT * FROM business b 
INNER JOIN business_category bc_1 ON b.primary_category = bc.id 
INNER JOIN business_category bc_2 ON b.secondary_category = bc.id 
LEFT OUTER JOIN business_category bc_3 ON b.tertiary_category = bc.id 

顯得相當長,我要的是業務表中每個類別名稱

回答

0

據我所知,你現在正在做的方式已經有效。你有很多選擇,比如創建子查詢,但效率比你創建的低。

如果你已經在所有表上正確定義了索引,那麼最好去。更具體地講這些列:

primary_category 
secondary_category 
tertiary_category 

,因爲這些都是從表的外鍵。

+0

這是否不起作用SELECT * FROM業務B INNER JOIN business_category公元前b.primary_category = bc.id AND b.secondary_category = bc.id LEFT OUTER JOIN business_category bc_3 ON b.tertiary_category = bc_3.id –

+0

@MatthewChambers不,這與'business b INNER JOIN business_category bc_1 ON b.primary_category = bc.id INNER JOIN business_category bc_2 ON b.secondary_category = bc.id'非常不同,如果你這樣做,你將得到不正確的結果。您無法顯示'secondary_category'列的類別名稱。 –

+0

好的,謝謝約翰和我的結構也沒關係 - 不需要在兩者之間的表 - 這是完全可以接受的做法?可能是 –

相關問題