2015-08-31 67 views
0

我有一個主表:圖像和投票。在單獨的數據透視表中按行數排序

的票包含2個字段:ID,image_id

我希望做的是查詢圖像表並返回他們通過投票在投票表中的金額排序。

目前:

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

我瞭解基本的左側連接,但怎麼也想不到按投票數進行排序。只需要一個開始的例子。

感謝

+0

該字段包含票進入?或者列表中的每一行代表一個投票? – CodeGodie

回答

1

假設在您的投票表中每一行指對圖像一票,這應該工作: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 
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