對於一個實例,我們有這三個表中的一行:獲取基於其他兩個表
terms_relation
╔═════════╦═════════╗
║ post_id ║ term_id ║
╠═════════╬═════════╣
║ 1 ║ 1 ║
║ 1 ║ 2 ║
║ 1 ║ 3 ║
╚═════════╩═════════╝
terms_taxonomy
╔════╦═════════╦══════════╗
║ id ║ term_id ║ taxonomy ║
╠════╬═════════╬══════════╣
║ 1 ║ 1 ║ categ ║
║ 2 ║ 2 ║ categ ║
║ 3 ║ 3 ║ tag ║
║ 4 ║ 3 ║ categ ║
║ 5 ║ 4 ║ categ ║
║ 6 ║ 5 ║ tag ║
╚════╩═════════╩══════════╝
方面
╔════╦════════╦════════╗
║ id ║ name ║ slug ║
╠════╬════════╬════════╣
║ 1 ║ samsung║ samsung║
║ 2 ║ nokia ║ nokia ║
║ 3 ║ opera ║ opera ║
║ 4 ║ chrome ║ chrome ║
║ 5 ║ webkit ║ webkit ║
╚════╩════════╩════════╝
當terms_relation.post_id = 1
,我該如何選擇terms
所有行具有在terms_taxonomy
categ
一個taxonomy
基於term_id
?
所以它必須得到:samsung
,nokia
(不是opera
,因爲它是一個標籤)。
這是我目前的嘗試,可惜我不明白這有什麼錯我的查詢:
select terms.name from terms_taxonomy
join terms_relation
on terms_relation.post_id = 1
join terms
on terms_taxonomy.term_id = terms.id
where taxonomy = "categ"
上述查詢的不需要的輸出:
+---------+
| name |
+---------+
| samsung |
| nokia |
| opera |
| chrome |
| samsung |
| nokia |
| opera |
| chrome |
| samsung |
| nokia |
| opera |
| chrome |
| samsung |
| nokia |
| opera |
| chrome |
| samsung |
| nokia |
| opera |
| chrome |
| samsung |
| nokia |
| opera |
| chrome |
+---------+
是的,這三者是相關的,儘管它仍然是'歌劇'。 – Michelle
@JackSpairow好的謝謝你的更新,我會重新檢查它。 –
'terms.id = terms_taxonomy.term_id' – Michelle