我有一個帖子的數據庫,每個帖子都有標籤。這些表分別被命名爲Posts
和Tags
。我還有第三個表,名爲Posts_Tags
,它維持這兩個表之間的多對多關係。從多對多關係的末端選擇數據
爲了做到這一點,我的帖子和我的標籤表都有一個id
列。因此,我的Posts_Tags
表具有用於存儲映射的postid
和tagid
列。
例如,我正在查詢標題中包含單詞「class」的所有帖子。我可以用這個查詢很容易做到這一點:
SELECT * FROM Posts WHERE title LIKE '%{class}%'
不過,現在我想查詢所有帖子,不僅有「類」的稱號,而且還標有「Java」的標籤。
SELECT id FROM Tags WHERE name='Java'
然後,我可以把它插入到我的第一個查詢,像這樣的:我可以在兩個單獨的查詢,在那裏我第一次獲得了Java標籤的ID做到這一點
SELECT Posts.*
FROM Posts
INNER JOIN Posts_Tags
ON Posts.id=Posts_Tags.postid
WHERE Posts_Tags.tagid='$java_tag_id'
AND title LIKE '%{class}%'
然而,我知道我可以在單個查詢中做到這一點,我只是不知道如何。在做一個連接時,我仍然需要考慮很多關於連接的問題,並且在同一個查詢中執行多個連接會讓我頭暈目眩。我應該如何構建我的查詢來執行此操作?
很好,謝謝。我認爲我有點過度了,嘿。無論如何,這完美的作品! –