我不确定如何做到这一点 - 我只对MySQL中的连接知识有限,而且从我读到的内容来看,我认为它们在这里没什么用处。
基本上,我有2个表:
images votes
--------------------------- ------------------------------
image_id | name | square_id vote_id | image_id | vote_type
--------------------------- ------------------------------
1 img1 14 1 4 1
2 img2 3 2 17 0
3 img7 72 3 2 1
... ...
n imgn 1478 n n 1
我想做的是获取每张图片的详细信息以及在特定条件为真的每张图片上投放的投票数(加上vote_type
)(例如每个图像都有一定的square_id
)。执行此查询的第一部分很简单:
SELECT `image_id`, `name` FROM `images` WHERE `square_id` = :boundParameter;
但是,我不确定如何在我的查询中为每个符合原始WHERE条件的图像获取每个vote_id
和vote_type
。
我将如何做到这一点?
答案 0 :(得分:4)
这实际上是表之间非常简单的连接。你真的非常should read this Q&A that I put together关于SQL和查询以及两个表之间的连接。
与此同时,这可能会给你你想要的东西:
select
img.image_id,
img.name,
img.square_id,
count(vot.vote_id) as numberVotes,
vot.vote_type
from
images img
join votes vot
on img.image_id=vot.image_id
group by
img.image_id,
img.name,
img.square_id,
vot.vote_type
所以,首先,你不想要多个查询,你想在这里使用一个查询。对数据库运行多个连接/查询比运行一个获取所需数据的查询要高很多。
答案 1 :(得分:0)
试试这样:
SELECT images.image_id, images.name , votes.vote_id , votes.vote_type
FROM images
LEFT JOIN votes ON images.image_id = votes.image_id
WHERE `square_id` = :boundParameter;
答案 2 :(得分:0)
SELECT images.image_id,
images.name,
votes.vote_id,
votes.vote_type
FROM images
LEFT JOIN votes ON images.image_id = votes.image_id
WHERE images.square_id = :boundParameter;