我在MySQL數據庫,位置和標籤中有兩個表格,第三個表格LocationsTagsAssoc將兩個表格關聯起來,並將它們視爲多對多關係。在MySQL中選擇多對多關係
表結構如下:
Locations
---------
ID int (Primary Key)
Name varchar(128)
LocationsTagsAssoc
------------------
ID int (Primary Key)
LocationID int (Foreign Key)
TagID int (Foreign Key)
Tags
----
ID int (Primary Key)
Name varchar(128)
因此,每個位置可以被標記與多個tagwords,並且每個tagword可以被標記到多個位置。
我想要做的是隻選擇標有的地方所有提供的標籤名稱。例如:
我希望所有標記爲「樹」和「鞦韆」的地點。應選擇位置「公園」,但位置「森林」不應該。
任何有識之士將不勝感激。謝謝!
謝謝比爾。這是有道理的,並且運作良好。這兩個查詢在5個標記名查詢上的速度大致相同 - 我還沒有進行過任何測試。優秀的答案 - 謝謝。 – 2010-06-08 23:17:27
我可以從經驗中證實,儘管後一種方法看起來更好(對我來說,無論如何),但對於大型表格,第一種方法可能會*效率更高。 – 2014-11-29 04:55:16
@NickF,是的,我發現自連接方法有更好的性能。在我的演示文稿中查看結果[SQL Query Patterns,Optimized](http://www.slideshare.net/billkarwin/sql-query-patterns-optimized) – 2014-11-29 19:13:59