在单独的数据透视表中按计数排序行

时间:2015-08-31 19:27:15

标签: php mysql join

我有一张主表:图像和投票。

投票包含2个字段:Id,image_id

我想要做的是查询图像表并按照投票表中的投票数量返回它们。

目前:

$stmt = $conn->prepare(
    'SELECT *
    FROM images
    LIMIT 10'
);

我理解基本的左连接,但不能想到如何通过计票来命令它们。只需要一个开始的例子。

由于

2 个答案:

答案 0 :(得分:1)

假设您的VOTES表格中的每一行都意味着对图片投了一票,这应该有效: SQL DEMO

SELECT *, COUNT(v.image_id)
FROM images AS i
LEFT JOIN votes AS v ON i.id=v.image_id 
GROUP BY i.id
ORDER BY v.image_id desc

答案 1 :(得分:0)

drop table if exists t1;
create table t1 (id int);
insert into t1 values (1), (2), (3);
drop table if exists t2;
create table t2 (id int, img_id int);
insert into t2 values (1, 1), (2, 1), (3, 2), (4,1), (5,3), (6,2);

select * 
  from t1 
    left join 
      (select img_id, count(*) count 
           from t2 
         group by img_id) c 
    on img_id=t1.id 
  order by count

Demo on sqlfiddle