【问题标题】:How to add GROUP_CONCAT to LEFT JOIN query?如何将 GROUP_CONCAT 添加到 LEFT JOIN 查询?
【发布时间】:2011-01-19 20:50:41
【问题描述】:

我有这个查询(和结果):

select articles.article_id, articles.article_text, article_photos.photo_filename
from
  articles
left join article_photos
on article_photos.article_id=articles.article_id

>>> results
1,some_text,photo1.jpg
1,some_text,photo2.jpg
1,some_text,photo3.jpg

我如何将 GROUP_CONCAT 合并到这里以便我得到:

>>> results

1,some_text,photo1.jpg
NULL,NULL,photo2.jpg
NULL,NULL,photo3.jpg

基本上,我有一个带有文章的表格,以及带有图像的相关表格。一篇文章可以有多个属于它的图像,因此我尝试在 while 循环内将其打印在屏幕上,并且不希望文本在有多个图像时一遍又一遍地重复。

【问题讨论】:

  • 您有没有深入了解#1630 - FUNCTION mydatabasename.GROUP_CONCAT does not exist 问题?我得到了完全相同的结果,但无法弄清楚。

标签: mysql join group-by group-concat


【解决方案1】:
select articles.article_id, articles.article_text, group_concat(article_photos.photo_filename)
    from articles
        left join article_photos
            on article_photos.article_id=articles.article_id
    group by articles.article_id, articles.article_text

会回来

1    some_text    photo1.jpg,photo2.jpg,photo3.jpg

这与您在预期结果中显示的不太一样。这是你要求的吗?

【讨论】:

  • 嗯,这个查询有效,但对我来说它返回的结果与原始查询相同。
  • 我所拥有的是 php 循环遍历这些结果并在屏幕上打印文本,以及下面的所属图像。所以,当文章有 3 张与之相关的图片时,我的原始查询会导致相同的内容也被打印 3 次。
猜你喜欢
  • 2014-07-30
  • 2015-02-03
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2015-01-10
  • 2014-05-06
相关资源
最近更新 更多