【问题标题】:MySQL: Select Fields from One Table Referencing Two Other TablesMySQL:从一个表中选择引用两个其他表的字段
【发布时间】:2017-03-08 23:16:09
【问题描述】:

我有 3 个表:Products、Category、Product_Category。

产品表有:“id,product_name”

id     | product_name
------ | ------------
1      | glove
2      | shirt

类别表有:“id,category_name”

id     | category_name
------ | -------------
1      | cotton
2      | polyester
3      | leather

Product_Category 表有“id,product_id,category_id”

id | product_id | category_id
-- | ---------- | -----------
1  | 1          | 1
2  | 1          | 3
3  | 2          | 2

产品可以有多个类别,所以我想要运行查询的以下输出

输出
手套 - 棉、皮革
衬衫 - 涤纶

这是我没有运气的尝试。

SELECT products.product_name, categories.category_name
FROM product_category
INNER JOIN products on product_category.product_id=products.id
INNER JOIN categories on product_category.category_id=categories.id
LIMIT 0,1000

我意识到这可能是一个简单的查询,只是想不通。

【问题讨论】:

  • 可能只是拼写错误,但 productid 2 没有子类别,子类别 3 没有匹配的类别!
  • 这确实是一个错字。已修复(我希望)
  • @PaulKragthorpe 上述查询有什么问题?什么是预期的输出

标签: mysql


【解决方案1】:

试试这个

select p.product_name, group_concat(c.category_name, ",") category_name
from Product_Category pc 
join Categories c ON (pc.category_id = c.id)
join Products p ON (pc.product_id = p.id)
group by 1

【讨论】:

  • 不错。谢谢!我知道这很容易。基本上是我不知道的 group_concat 。我现在开始工作了 =)
  • 我做了,但没有足够的声望让它立即显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多