php - Mysql/PHP/Smarty - 如何在一行中检索 2 个不同的行集?

标签 php mysql smarty pivot

我尝试了很多不同的方法,并搜索了其他问题和论坛,但我就是找不到我要找的东西(可能是搜索了错误的关键字)。

无论如何,这是我的结构:

mycars 
--car_id (pk)
--make
--model
mycars_details
--car_id (pk)
--option1
--option2
mycars_gallery
--car_id (pk)
--imgcount
--imglink
--imgthumb

我需要拉出所有 3 个表,这对于 mycars 和 mycars_details 来说效果很好(每个 PK 只有 1 行),但我的 mycars_gallery 对于 1 辆车有 3 行(图像)。用户最多可为 1 辆车上传 12 张图片。

所以当我运行这个sql时:

SELECT * FROM mycars c 
LEFT OUTER JOIN mycars_gallery g 
ON c.car_id = g.car_id 
LEFT OUTER JOIN mycars_details d 
ON c.car_id = d.car_id 
WHERE c.status = 1 AND c.car_id = 27

输出:

|car_id|make|model|option1|option2|imgcount|imglink  |imgthumb   |
  --------------------------------------------------------------
|  27  |volk|jetta|   1   |   0   |   1    |link1.jpg|thumb1.jpeg|
|  27  |volk|jetta|   1   |   0   |   2    |link2.jpg|thumb2.jpeg|
|  27  |volk|jetta|   1   |   0   |   3    |link3.jpg|thumb3.jpeg|

所以我从其他表中得到了所有这些重复项。我将这些数据存储在 smarty 数组中,并使用 smarty 循环将其吐出到页面上。

类似这样的事情:

{section name=car loop=$SHOW_ARRAY}
    {$SHOW_ARRAY[car].make} - {$SHOW_ARRAY[car].model}<br>

    {$SHOW_ARRAY[car].imglink}
{/section}

问题:我觉得我的查询是错误的,如何检索包含数据库中存储的所有图像的单辆车 (mycars_gallery tbl)

最佳答案

Saurabh 在他关于可能使用 group concat 函数的评论中包含的内容如下所示:

SELECT c.*, 
  GROUP_CONCAT(g.imglink) AS links,
  GROUP_CONCAT(g.imgthumb) AS thumbs
FROM mycars c 
LEFT OUTER JOIN mycars_gallery g 
ON c.car_id = g.car_id 
LEFT OUTER JOIN mycars_details d 
ON c.car_id = d.car_id 
WHERE c.status = 1 AND c.car_id = 27
GROUP BY c.car_id;

这将为您提供拇指和链接列表作为单个逗号分隔值。

关于php - Mysql/PHP/Smarty - 如何在一行中检索 2 个不同的行集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18017020/

相关文章:

PHP 警告 : mysqli_connect(): (HY000/2002): Connection refused

javascript - window.open 无法正常工作,解析 URL 被 chop

php - Mysql查询不返回任何行

php - 使用 codeigniter 连接表并将数据提取到表中

php - 如何同时将一张表中的id插入到另一张表中?

php - 如何在 PDF 中正确定位图像旁边的文本?

smarty {cycle} 和三个值

php - 如何改进 if 算法

php smarty if else 循环不起作用

mysql - 当有两个 max (XXX) 时,SQL 只选择一行