Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL组查询帮助_Mysql_Sql - Fatal编程技术网

Mysql SQL组查询帮助

Mysql SQL组查询帮助,mysql,sql,Mysql,Sql,我在想如何最好地使用GROUP_CONCAT时遇到了一些问题。在下面的查询中,我试图从JAM_Plot_图像中选择多个图像,并将它们与单个记录进行比较。因此,获取记录1,在每行显示image1.jpg和image2.jpg。然后获取记录2,在第二行显示image3.jpg、image4.jpg,依此类推 SELECT *, GROUP_CONCAT(JAM_Plot_Images.image ORDER BY JAM_Plot_Images.image) AS images FROM JAM_P

我在想如何最好地使用GROUP_CONCAT时遇到了一些问题。在下面的查询中,我试图从JAM_Plot_图像中选择多个图像,并将它们与单个记录进行比较。因此,获取记录1,在每行显示image1.jpg和image2.jpg。然后获取记录2,在第二行显示image3.jpg、image4.jpg,依此类推

SELECT *, GROUP_CONCAT(JAM_Plot_Images.image ORDER BY JAM_Plot_Images.image) AS images
FROM JAM_Plots
LEFT JOIN JAM_Plot_Images ON JAM_Plots.page_id = JAM_Plot_Images.page_id 
GROUP BY JAM_Plots.page_id

我遇到的问题是,如果一行中没有图像,则在输出记录时会破坏唯一标识符,但仅针对该记录。因此,如果记录1、2和4有图像,它将输出所有内容,但如果记录3没有图像,则不会显示唯一ID。phpmyadmin输出中显示空值。我曾尝试使用COALESCE来解决此问题,但无法完全使其正常工作。

此问题与
组_CONCAT()
无关,当表之间存在重复的列名时,这是
左联接的一个普遍问题

由于两个表中都有相同的列名
page\u id
,因此将在结果中选择这两个列名。但是当没有图像时,
JAM\u Plot\u images.page\u id
将为
NULL

要消除歧义,您应该为
JAM\u Plots.page\u id
提供一个别名,并使用该别名

SELECT *, JAM_Plots.page_id AS jp_page_id, GROUP_CONCAT(...)
...

为了更好地理解问题,请共享您尝试过的示例输入和输出以及预期的输出。因此,如果要将其
NULL
替换为零或空?如果要删除没有图像的行,可以使用
内部联接
。但实际上,您没有告诉应该是什么,当不匹配时,第二个表中的所有列的输出
LEFT JOIN
都返回空值。您说的是什么唯一标识符?你是说
页面id