如何从第一个表中查询每个结果的第二个表?

时间:2013-08-30 10:14:17

标签: php mysql sql

我不确定如何做到这一点 - 我只对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_idvote_type

我将如何做到这一点?

3 个答案:

答案 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;