たとえば、次の 3 つのテーブルがあります。
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
taxonomy
categ
terms_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 |
+---------+