簡體   English   中英

SQL 連接 3 表並連接值

[英]SQL Join 3 Tables and concatenate values

我有 3 個表與一個:m 關系

語言:

  • ID(主鍵)
  • 姓名
  • 蛞蝓

產品:

  • ID
  • 姓名
  • slug-產品組

關系表:

Lang_Prod:

  • lang_prod_id(由 lang_id 和 prod_id 組成)
  • lang_id
  • prod_id

現在我想獲得所有具有相應語言名稱的產品:

  • 產品
  • 產品組
  • 語言名稱(多個值)

我試過了:

SELECT product.*, languages_products.language_id,
       GROUP_CONCAT(languages_products.language_id) as languages
FROM product
  INNER JOIN languages_products ON id = languages_products.product_id
GROUP BY product.id;

結果是:

  • 產品名稱
  • product_slug
  • 產品組
  • 帶有語言 ID 的字符串

我想要一個帶有語言名稱的字符串,而不是帶有語言 ID 的字符串

我怎樣才能存檔?

您需要加入語言表

SELECT product.id,product.name,product.productgroup,
       GROUP_CONCAT(l.name) as languages
FROM product
      INNER JOIN languages_products ON id = languages_products.product_id
      INNER JOIN languages l ON languages_products.language_id=l.id
    GROUP BY product.id,product.name,product.productgroup

您需要添加另一個與languages表的連接,並使用其中的name列。 不過,我會將其分組在內部查詢中:

SELECT p.*, languages
FROM  product p
JOIN  (SELECT   product_id, GROUP_CONCAT(l.name) as languages
       FROM     languages_products lp
       JOIN     languages l ON lp.language_id = l.id
       GROUP BY product_id) cl ON cl.product_id = p.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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