簡體   English   中英

MySQL:如何在一個查詢中使用assign表連接三個表?

[英]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

SQL小提琴鏈接

只需使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM