说我有两张桌子。一个包含项目列表,一个包含项目的图片。
这样的事情:
项
+----+---------+
| id | name |
+----+---------+
| 1 | oranges |
| 2 | apples |
+----+---------+
图片
+----+---------+
| id | item_id |
+----+---------+
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
+----+---------+
我的问题是:在单个查询中是否可以从2
中选择项Items
并加入Pictures
表中item_id
引用的所有行同样的身份?
我确信我已经尝试了几乎所有我能想到的东西,但没有想到任何事情。如果答案很简单,我很抱歉,但现在只是逃避了我。
修改
@Andomar ,这有效,但它并没有完全给我我想要的结果。我想我应该更清楚,并且问是否有可能得到类似这样的结果(它是一个php数组,但组织就是我所追求的):
$results = array(
[0] => array(
'id' => 1,
'name' => 'oranges',
'images' => array(
[0] => ...,
),
),
[1] => array(
'id' => 2,
'name' => 'apples',
'images' => array(
[0] => ...,
[1] => ...,
),
),
);
答案 0 :(得分:2)
连接应该可以解决问题:
select *
from Items i
left join Pictures p on p.item_id = i.id
where i.id = 2
答案 1 :(得分:1)
SELECT i.name, GROUP_CONCAT(p.id SEPARATOR ',') AS pictures
FROM Items i
LEFT JOIN Pictures p
ON p.item_id = i.id
WHERE i.id = 2
如果没有GROUP_CONCAT,它将为每个匹配的图片返回不同的行。通过对Pictures
表中的结果进行分组,您可以得到一行结果。