2010-12-22 73 views
2

廣告表格
Screenshot http://img90.imageshack.us/img90/6295/adsvo.png如何基於列的值

電話表
Screenshot http://img194.imageshack.us/img194/3713/phones.png

汽車表
Screenshot http://img35.imageshack.us/img35/1035/carsm.png

在不同的表連接我有3代表廣告,汽車和電話。

我想加入表是基於廣告表中的類別。

和我試過這個查詢,但沒有運氣,有幫助嗎?

SELECT * 
    FROM `ads` 
    JOIN `ads.category` ON `ads.id` = `ads.category.id` 

**我無法添加評論您的任何帖子,但我希望它是基於廣告表中的類別自動。

例如: - 如果表中有手機類,我會自動加入電話表,然後

SELECT * 
    FROM `ads` 
    JOIN `phone` ON `ads.id` = `phone.id` 

如果在表中有汽車類,我會自動加入汽車表

SELECT * 
    FROM `ads` 
    JOIN `cars` ON `ads.id` = `cars.id` 
+1

表是如何相關的?你想讓你的結果看起來像什麼? – 2010-12-22 04:23:00

回答

3

獲得車輛:

SELECT * 
FROM ads JOIN cars ON ads.ID = cars.ID 

拿到手機:

SELECT * 
FROM ads JOIN phones ON ads.ID = phones.ID 

獲得都使用UNION:

SELECT ads.ID, ads.Title, ads.Desc, ads.category, 'Car' AS AdType, cars.Year AS Col1, cars.cc AS Col2, cars.transmission AS Col3 
FROM ads JOIN cars ON ads.ID = cars.ID 
UNION ALL SELECT ads.ID, ads.Title, ads.Desc, ads.category, 'Phone' AS AdType, phone.Model AS Col1, phone.Color AS Col2, '' AS Col3 
FROM ads JOIN phones ON ads.ID = phones.ID 

注:我會建議你設置外鍵在您的汽車和電話表,引用ads.ID而不是使用ID字段子表

1
SELECT  ads.*, 
      cars.year, cars.cc, cars.transmission, 
      phones.model, phones.color 
FROM  ads 
    LEFT JOIN cars 
    ON  cars.id = ads.id 
    LEFT JOIN phones 
    ON  phones.id = ads.id 

雖然我@Scrum同意的(主鍵?),你可以離開了加入他們的行列,然後(在你的代碼)使用類型字段,檢索正確的列。

我也覺得這些列應該是NULLABLE,並在一個表中。我沒有看到用1-1關係(和直接的關鍵關係)來解決這些問題的關鍵。這當然不是標準化(我可以看到)。 也許我累了,不合適

+1

我認爲它是另一回事,而不是疲倦和無能 – 2010-12-22 04:43:38