我有數據根據其位置獲取列表。這些位置被映射到位置圖表中。結構基本如下所示:MySQL 3表加入
listings
-id
-title
etc.
locations
-id
-location_name
etc.
location_map
-listing_id
-location_id
當我想根據它們的位置列出列表時,我正在使用以下SQL。基本上,我有位置ID,然後我可以找到位於該位置的列表。我使用DISTINCT,因此我不會得到重複的位置結果。
這可行,但我想知道這是否是一個好方法,因爲我需要使用DISTINCT。有沒有更好的,更喜歡的做這種事情的方式?
SELECT DISTINCT LS.title, LS.id, LS.url, LS.description
FROM listings LS
JOIN location_map MAP ON LS.id = MAP.listing_id
JOIN locations LOC ON LOC.id = MAP.location_id
WHERE LOC.id = 123
ORDER BY LS.title;
你爲什麼得到重複?每個列表/位置組合中,location_map中是否有多行? – 2010-09-22 16:43:10
此代碼有效(我沒有重複),我只是不確定它是否是最好的方式。 – Frank 2010-09-22 16:52:09
他的意思是,如果你不使用'DISTINCT',你會得到什麼樣的模糊?從你已經顯示的數據模型中,你不應該得到愚蠢的... – JNK 2010-09-22 17:02:49