Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询以获取主要获胜的用户_Php_Mysql - Fatal编程技术网

Php 查询以获取主要获胜的用户

Php 查询以获取主要获胜的用户,php,mysql,Php,Mysql,我有两个表film和users,我使用这个查询来获取优胜者的用户 $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 *

我有两个表film和users,我使用这个查询来获取优胜者的用户

$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"); 
用户表包含用户id和其他相关字段,胶片表包含胶片id、用户id、iswinningclip 有人能推荐我吗


谢谢

首先选择userid和iswinningclip,然后按userid应用group,这样您将获得iswinningclip的总计数,然后在该列上应用max函数。这就是获胜的id。

在这种情况下,您可以使用连接,否则您使用的查询看起来更复杂

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

在user_id上使用两个表的联接,将条件设置为winningclip=1,应用group by userid,最后根据user_id的计数按降序排列结果

查询应该是

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
结果


试试这个,它会帮你的

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

你好你能告诉我们这张表上两个表的结构吗?编辑你的问题和世卫组织的样本数据和期望的结果。请参阅。把它装起来。显示预期结果。帮助我们帮助你:p。。。如果这个链接太混乱,转到第2节it@LizaAsh我已经用一个例子给出了答案。检查一下这是否是你想要的条件应该是什么?你到底想要什么?在你的查询中放入什么条件我希望首先出现的用户的剪辑是WinningClip=1最长时间它给出了获胜剪辑的总数
select userid,count(ISWINING)作为x从film group按用户ID排序按x desc排序:这里的冒号是userid、filmid和ISWINING(这个冒号只有1和0)这位工作人员,现在我有一个问题,就是当用户滚动记录扩展时,我正在使用ajax进行分页,我一直在用ajax传递用户id,这样当用户滚动时,应该执行“$winners\U query=”(“选择用户。*,将(film.user\u id)计数为用户加入film On(users.user\u id=film.user\u id)时没有奖励其中film.iswinningclip=1和users.user_id<$get_id Group by users.user_id Order by no_of_awards DESC limit 12”);“现在我应该在url中传递什么,以便获得较少奖励的用户出现。