所以我有两张桌子。
项目表:
+---------+-----------+
| item_id | item_name |
+---------+-----------+
| 1 | Item One |
| 2 | Item Two |
+---------+-----------+图像表格:
+---------+----------------------+
| item_id | item_image |
+---------+----------------------+
| 1 | clofr9ohuvex5cxeyrfm |
| 1 | slnorjbqfd2x7ks0marp |
| 1 | oomkjtomvasklx9be4sq |
| 2 | um8donrpeuvfrmqb7qt |
| 2 | lowcvoaijxniiqdj5eoe |
| 2 | qwxfartcsdyusw4lrngi |
+---------+----------------------+我的php代码,用于获取项目列表及其关联图像:
$itemsQuery = $db->prepare("
SELECT *
FROM items a,item_images b
WHERE a.item_id = b.item_id
");
$itemsQuery->execute();
$items = $itemsQuery->fetchAll(PDO::FETCH_ASSOC);
var_dump($items);我得到了6个结果而不是2个。
我想要的是显示"items表“中的2个项目,以及它们在基于item_id的"images表”中的关联图像。
我可以查询"items table“并遍历它,再次查询数据库以获得图像。但是我如何在一个数据库调用中做到这一点呢?
发布于 2018-08-09 05:32:43
您可以使用GROUP_CONCAT让MySQL为您将第二个表中的所有值分组到单个列中:
SELECT
a.*, GROUP_CONCAT(b.item_image) AS item_images
FROM
items a,item_images b
WHERE
a.item_id = b.item_id
GROUP BY
a.item_id结果将是一个名为item_images键,它包含item的每个item_image,并以,分隔
um8donrpeuvfrmqb7qt,lowcvoaijxniiqdj5eoe,qwxfartcsdyusw4lrngi然后,如果您希望将其作为数组使用,则可以在PHP端使用explode。
https://stackoverflow.com/questions/51755833
复制相似问题