gpt4 book ai didi

php - MySQL合并查询并忽略重复项

转载 作者:搜寻专家 更新时间:2023-10-30 22:16:36 25 4
gpt4 key购买 nike

我有两个表 images2image_data

enter image description here enter image description here

因此,目标是为所有上传的图片 (images2) 创建一个表,然后 image_data 为该图片分配不同的选项。

例如,这里有一些示例数据:

enter image description here

所以image_id 10不止一行,因为这张图片同时关联了TN和CQ。它们也可以与不止一种语言和幻灯片相关联,所以我会添加到第二行并更改 slide_id 或 language_id ..如果想添加更多,我会为其添加一个新行。

目标是获得所有图像的列表,然后当您单击它时它会弹出,您可以编辑选项并直接从那里进行更改。

enter image description here

我需要帮助编写查询。我现在拥有的那个:

SELECT images2.id, images2.filename, image_data.slide_id, image_data.language_id,
image_data.type FROM images2
LEFT JOIN image_data ON images2.id = image_data.image_id

该查询有几个问题。它显示了重复项,因为 image_id 10 有两行。

enter image description here

但我需要图像 #10 的第二行,因为我需要看到它也与 CQ 相关联,这样我就可以在它弹出时选中该复选框。

所以我需要创建一个查询来显示所有没有重复的唯一图像,以及它具有的所有选项。

我不确定执行此操作的最佳方法。我是否需要按照我的数据库表的方式重新进行操作?感谢您的帮助。

谢谢。

最佳答案

您可以做的是使用 GROUP_CONCAT() 将多行中的值转换为单个串联字符串。以下检索 幻灯片语言 的 ID 及其名称,以更好地简化您的表单。

SELECT
a.id,
a.filename,
GROUP_CONCAT(CONCAT(b.slide_id, '::', c.slide_name)) AS slides,
GROUP_CONCAT(CONCAT(b.language_id, '::', d.language_name)) AS languages,
GROUP_CONCAT(b.type) AS types,
FROM
images a
LEFT JOIN
image_data b ON a.id = b.image_id
LEFT JOIN
slides c ON b.slide_id = c.id
LEFT JOIN
languages d ON c.language_id = d.id
GROUP BY
a.id

图像 10 的结果集将类似于:

id    |    image_filename    |    slides    |    languages    |    types
-------------------------------------------------------------------------
10 | p170sfhe... | 5::slide5 | 1::language1 | TN,CQ

在 php 中,只是 explode() 基于分隔符的字符串。

关于php - MySQL合并查询并忽略重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11276355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com