我有两张桌子。一个有关属性的信息。其他商店为每个物业存储3张图片。在这三个图像中 - 一个被标记为“主要”图像。
所以我有:
Properties:
p_id name
1 villa a
2 villa b
3 villa c
4 villa d
和
Images
i_id p_id main
1 1 0
2 1 0
3 1 1
4 2 0
5 2 1
6 2 0
我需要生成一个查询,该查询返回所有具有主图像id的属性。 e.g。
p_id name i_id
1 villa a 3
2 villa b 5
我知道这将涉及使用LIMIT 1和连接,但不知道从哪里开始,我已经尝试通过使用子查询来做到这一点,但觉得它必须比我正在做的更简单....
*我如何* 这样它通过“main”选择前1来命令查询(即如果未设置main,它仍将选择图像)?
答案 0 :(得分:2)
这是一种方式:
select *
from properties p
left join images i
on p.p_id = i.p_id
and i.main = 1
如果没有找到主图像,左连接将返回NULL图像。
答案 1 :(得分:1)
你走了:
SELECT p_id, name, i_id
FROM properties p INNER JOIN images i ON (p.p_id = i.p_id AND i.main = 1)
或
SELECT p_id, name, i_id
FROM properties p INNER JOIN images i ON (p.p_id = i.p_id)
WHERE i.main = 1
答案 2 :(得分:1)
SELECT p.p_id, p.name i.i_id FROM properties p JOIN images i USING p_id where p_id = 1;
答案 3 :(得分:0)
select p.p_id, p.name, i.i_id
from properties p join images i on p.p_id = i.p_id
where i.main=1
答案 4 :(得分:0)
您想使用如下查询:
SELECT p.p_id, p.name, i.i_id FROM Images i INNER JOIN Properties p ON p.p_id = i.p_id WHERE i.main = 1