【问题标题】:Joining multiple entries to single entry将多个条目连接到单个条目
【发布时间】:2011-07-23 13:39:21
【问题描述】:

我有 2 个表格,一个列出属性(房屋、公寓等),另一个表格包含图像文件名和一个 ID,以链接到相关属性。

现在,我需要将它们连接在一起,但以某种方式只返回一次属性信息,然后是链接的 X 个图像记录。

我使用 LEFT JOIN 取得了一些成功,因为我可以选择记录,但它返回了属性的重复信息,例如1 个链接到 3 个图像的属性将从 LEFT JOIN 查询返回 3 个结果,因此在我的输出页面上,打印详细信息 3 次。

接下来的部分是如何打印属性详细信息(现在应该是单数)和多个图像信息?

希望你能帮忙!

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    您可以使用 group_concat 函数来获取文件名列表。默认情况下,这将只允许您在结果 group_concat 字段中拥有 1k 的数据。

    select prop.*, group_concat(filenames) as files
       from properties prop 
       join images on prop.id = images.prop_id
       where prop.owner_id = 'something'
       group by prop.id
    

    如果您需要该字段中的更多数据,您可以调整 group_concat_max_len 属性。

    然后在 PHP 中,您将查看结果查询,您可以分解每个文件列,并循环遍历结果数组以显示图像。

    【讨论】:

    • 这非常接近!我遇到的问题是我有 2 个属性,每个属性都有 2 个图像。我正在使用 WHERE 子句根据所有者 ID 号选择属性。运行此查询仅返回 1 条记录,所有 4 张图像连接在一起,其中应该是 2 条记录,每条记录有 2 张图像。有什么想法吗?
    • 对,这就像一个魅力,但我有一些没有图像的属性 - 它没有返回任何记录?我是否再次将其设为 LEFT JOIN?
    • 工作,非常感谢!!!!尽管我很喜欢 CI 的 Active Record 东西,但它根本无法执行这些复杂的查询:(
    猜你喜欢
    • 2015-04-16
    • 2016-07-28
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多