结合两个Sql语句

时间:2018-08-24 22:47:38

标签: php sql

我正在尝试创建sql语句。将在数据库中找到一个随机用户ID,也可以从VOTES表中找到visitor(user id = 10)尚未向由随机确定的用户投票。

42

我必须结合这2条sql语句。我需要这样做是因为该网站将打开一个用户个人资料,访问者尚未对该用户进行投票。 谢谢

我以前使用过这些代码,但是这些代码主要显示访问者投票的个人资料,因此我需要从投票表中添加支票

$userid = 10
//1-Find a user randomly 
$query = $db->query("SELECT id FROM users ORDER BY RAND() LIMIT 1")->fetch(PDO::FETCH_ASSOC);
$randid = $query["id"];

//2-Visitor have not give vote to the user which we determine. This sql result will be empty
("SELECT * FROM votes WHERE userid = '{$userid}' AND receiver = '{$randid}'")

example link

1 个答案:

答案 0 :(得分:1)

老实说,我不理解您的描述。

但是要组合这两个查询,最简单的方法是将第二个查询作为子查询包括在内。

SELECT *
       FROM votes
       WHERE userid = '{$userid}'
             AND receiver = (SELECT id
                                    FROM users
                                    ORDER BY rand()
                                    LIMIT 1);

编辑:

您的评论使我相信您可能正在搜索类似的内容:

SELECT *
       FROM users u
       WHERE NOT EXISTS (SELECT *
                                FROM votes v
                                WHERE v.receiver = u.id
                                      AND v.userid = '{$userid}')
       ORDER BY rand()
       LIMIT 1;

它从users获取一个随机记录,其中votes中不存在任何记录,该用户来自users的用户为receiver并且userid等于到“访客”或10是什么。

也就是说,如果我理解正确,votes.receiver是另一个投票的用户,votes.userid是投票的用户。