0
結合我有三個表:條件不同的表之間的連接到不同的列
- products_taxons
- 分類羣
- 標籤
我想加入該表以獲得在列結果滿足:
如果tags.tag_name =「type」和tags.value =「Silver」,那麼它應該包含兩個條目 - taxons.name和concat(tags.value,taxon.name) 例如。
products_taxons#1,1
分類羣#1, 「耳環」 ...
標籤#1,1, 「型」, 「銀」所獲得的柱應包含 「耳環」 和「 SilverEarrings」
如果tags.tag_name = 「類型」 和tags.value = 「寶貝」,那麼它應該包含一項內容 - CONCAT(tags.value,taxon.name)
products_taxons#2,1
taxons#1,「耳環」...
個 標記#2,2, 「類型」, 「貴金屬」將得到的柱應包含 「PreciousEarrings」
- 所有其它情況 - 與taxons.name單個條目
我寫了下面的SQL查詢。它有效,但有沒有更好的,最佳的方式?
select pt.product_id as product_id, concat(tag.value,t.name) as taxon
from taxons as t
inner join products_taxons as pt on t.id = pt.taxon_id
left join tags as tag
on tag.taggable_id = pt.product_id and (tag.value='Precious' or tag.value='Silver')
UNION ALL (select pt.product_id as product_id, t.name as taxon
from taxons as t
inner join products_taxons as pt on t.id = pt.taxon_id
left join tags as tag
on tag.taggable_id = pt.product_id
where tag.value='Silver')
編輯:例如,請考慮下面的表項
product_id | taxon_id
------------+-----------
1000000001 | 1
1000000002 | 2
1000000003 | 3
id | name
-----------+---------------
1 | Necklace Sets
2 | Earrings
3 | Bracelets
product_id | tag_name | value
------------+-----------------------+--------------------------------------------
1000000001 | type | Silver
1000000002 | type | Precious
1000000003 | occasion | Everyday Wear
我想下面的結果
product_id | taxon
------------+-----------
1000000001 | Necklace Sets
1000000001 | SilverNecklace Sets
1000000002 | PreciousEarrings
1000000003 | Bracelets
@Jens:我已經更新了這個問題 – nish