2016-09-27 58 views
3

我有兩個表膜和用戶,我使用此查詢來獲取誰是贏家查詢來獲取大部分獲獎用戶

$winners_query=("Select * from users where user_id IN (Select user_id from film where iswinningclip=1) order by user_id desc limit 12"); 

我很難編寫一個查詢到的數據進行排序的用戶這樣最常贏得冠軍的用戶應該首先出現,等等。

,這並不爲我工作

$winners_query=("Select * from users where user_id IN (Select count(user_id) AS CN from film where iswinningclip=1 oder by CN desc) order by user_id desc limit 12"); 

用戶表中包含USER_ID和等相關領域和電影表包含film_id,USER_ID,iswinningclip 可有人建議我。

感謝

+0

你好。你能告訴我們這個兩張桌子的結構嗎? –

+0

編輯您的問題以及誰抽樣數據和預期結果。 –

+0

請參閱[什麼是Sqlfiddle,我爲什麼要關心?](http://stackoverflow.com/a/38899465)。加載它。顯示預期結果。幫助我們來幫助你:P ...如果該鏈接是太混亂了,去它 – Drew

回答

0

試試這個它會幫助你。

SELECT users.*, count(film.user_id) as no_of_awards 
FROM users join film 
On (users.user_id = film.user_id) 
WHERE film.iswinningclip = 1 
Group by users.user_id 
Order by no_of_awards DESC 
+0

這個工作的人,現在我有我用ajax分頁當用戶滾動記錄 膨脹的問題,我已經在阿賈克斯被路過的user_id這樣當用戶滾動 這應該是執行「$ winners_query =(「選擇用戶。*,計數(film.user_id),如從用戶no_of_awards JOIN膜上(users.user_id = film.user_id)WHERE film.iswinningclip = 1和users.user_id <$ get_id組由no_of_awards DESC極限12 users.user_id訂單「);」現在我應該通過哪些網址,以便獲得較少獎勵的用戶進入。 – Raman

0

首先選擇用戶名和iswinningclip,然後通過用戶ID應用組,所以你會得到iswinningclip的總數,然後在該列應用最多的功能。那是誰贏了。

+0

可以請你展示一下例如 – Raman

+0

'選擇用戶ID,通過計數用戶ID順序從膜組(iswinning)爲x通過X desc':這裏coloumns是用戶標識,filmid和iswinning(這coloumn只是具有1和0) –

0

您可以使用在這種情況下,加入否則查詢您使用看起來更加複雜

SELECT users.*, film.* 
FROM users 
inner join 
film 
On (users.id = film.user_id) 
WHERE film.iswinningclip = 1 
Group by users.id 
Order by count(users.id) DESC 
+0

應該是什麼條件? – Raman

+0

你想在你的查詢確切要放在哪裏條件 – kunal

+0

我希望用戶首先出現其剪輯iswinningclip = 1的最大時間 – Raman

0

使用JOIN上user_ID的兩個表,給的條件爲winningclip = 1,通過用戶ID應用組和終於下令基於user_ids的計數結果降序排列

查詢應該是這樣

SELECT 
    u.id, u.username, u.gender //select as many columns you want from users 
FROM 
    users u 
     JOIN 
    film f ON (u.id = f.user_id) 
WHERE 
    f.iswinningclip = 1 
GROUP BY u.id 
ORDER BY COUNT(u.id) DESC 

完整的例子

CREATE TABLE users (
    id INT NOT NULL AUTO_INCREMENT, 
    username VARCHAR(45) NULL, 
    gender VARCHAR(45) NULL, 
    PRIMARY KEY (id)); 

CREATE TABLE film (
    id INT NOT NULL AUTO_INCREMENT, 
    user_id INT NULL, 
    film_id INT NULL, 
    iswinningclip INT NULL, 
    PRIMARY KEY (id)); 


INSERT INTO users (username, gender) VALUES ('Kiran', 'M'); 
INSERT INTO users (username, gender) VALUES ('Liza', 'F'); 
INSERT INTO users (username, gender) VALUES ('Ajith', 'M'); 

INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('1', '1', '1'); 
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('1', '2', '1'); 
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('2', '1', '0'); 
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('2', '2', '1'); 
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('3', '3', '1'); 

SELECT 
    u.id, u.username, u.gender 
FROM 
    users u 
     JOIN 
    film f ON (u.id = f.user_id) 
WHERE 
    f.iswinningclip = 1 
GROUP BY u.id 
ORDER BY COUNT(u.id) DESC 

結果

enter image description here