2014-03-03 54 views
1

我有三個表是我試圖查詢:試圖查詢一個標記對象(多對多表)

MODS的

mod_id 
author 
url 
name 

標籤

tag_id 
tag_name 
tag_url 

tags_to_mods(mods & tags have many到很多關係)

ttm_id 
tag_id 
mod_id 

本質上我試圖找到與給定的mod_id相關的tag_name和tag_id。

我該如何去做這件事?我是一個非常新手的SQL,並且尚未嘗試像這樣正確查詢關係數據。我認爲有一種更好的方式來做到這一點,而不是我選擇去做的。

我嘗試在這(僞(ISH)代碼):

x = SELECT tag_id FROM tags_to_mods WHERE mod_id = $mod_id

SELECT tag_name, tag_id FROM tags WHERE tag_id = x

它得到想要的結果,但我有我的查詢表兩次......

+0

是否可以重新排列表格?看起來有三個表格會讓一切正確,我認爲如果將mod_id添加到標記表中,則可以將其減少到兩個,反之亦然。 – nick

+0

@nick我對數據庫的所有訪問都是通過硬編碼的語句處理的,所以我能夠準確控制我放入的內容以及何時使用 – sh3rifme

回答

1

試試這個(其中$ mod_id是Mod的id):

select tg.tag_name, tg.tag_id 
from Tags tg 
inner join tags_to_mods tm 
on(tg.tag_id = tm.tag_id) 
where tm.mod_id = $mod_id; 
+0

謝謝!它的魅力! – sh3rifme

+0

我很高興幫助@ sh3rifme – Hackerman

0
SELECT m.author, m.name, m.url, t.tag_id, t.tag_name 
FROM Mods AS m 
INNER JOIN tags_to_mods AS tm ON tm.mod_id = m.mod_id 
INNER JOIN Tags AS t ON t.tag_id = tm.tag_id 
WHERE m.mod_id = $mod_id 
+0

儘管我使用@Robert Rozas的答案,但感謝您的幫助! – sh3rifme