[英]MySQL: How to join three tables in one query with an assign table?
我有三張桌子:
ITEMS
itemid | itemname
1 | Item 1
FEATURES
featureid | featurename
1 | feature1
2 | feature2
3 | feature3
4 | feature4
... | ...
ASSIGN
assignid | itemid | featureid
1 | 1 | 1
1 | 1 | 2
1 | 1 | 3
1 | 1 | 4
我想要一個查詢,它會給我一個類似於此的結果:
ITEMS
itemid | itemname | featurename1 | featurename2 | etc
1 | Item 1 | feature1 | feature2 | etc
有沒有辦法在沒有第二個查詢的情況下執行此操作? 我發誓我只是以錯誤的方式思考它? 有任何想法嗎?
注意:功能可以是0到50種不同功能。 我的數據庫設計可能錯了嗎?
使用ASSIGN表鏈接它們,然后您可以使用GROUP_CONCAT()
來執行您想要的操作。 嘗試這個:
SELECT
ITEMS.itemid,
ITEMS.itemname,
FEATURES.featureid,
GROUP_CONCAT(FEATURES.featurename) AS FEATURES
FROM ITEMS
JOIN ASSIGN ON ITEMS.itemid = ASSIGN.itemid
JOIN FEATURES ON FEATURES.featureid = ASSIGN.featureid
只需使用ASSIGN表作為ITEMS和FEATURES的交叉參考。 所以通過ASSIGN表中的外鍵將所有內容連接在一起,如下所示:
SELECT
ITEMS.itemid
, ITEMS.itemname
, FEATURES.featureid
, FEATURES.featurename
, ASSIGN.assignid
FROM `ITEMS`
JOIN `ASSIGN`
ON ITEMS.itemsid = ASSIGN.itemid
JOIN `FEATURES`
ON FEATURES.featureid = ASSIGN.featureid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.