繁体   English   中英

Mysql:将3个表与多个“ where”连接在一起?

[英]Mysql: Joining 3 tables with more than one 'where'?

我试图在一个条件下将一个表连接到另一个表,然后在另一个条件下将表连接到另一个表。 您可以这样做,如果可以的话,正确的语法是什么? 我一直在尝试,但是不起作用:

$check = $members->prepare("select users.fname, users.lname, groups.groupid, attributes.max 
    from users 
    JOIN groups 
         on users.user_id = groups.userid 
    where groups.userid = ? 
    LEFT JOIN attributes 
         on users.user_id = attributes.userid 
    where attributes.groupid = ?");
$check->bind_param('ss', $_SESSION['token'][1], $which_group);
$check->execute();

干杯。

attributes.groupid的测试必须是LEFT JOIN上联接条件的一部分。 尝试在WHERE子句中测试此条件将迫使LEFT JOIN表现得像是INNER JOIN。

select users.fname, users.lname, groups.groupid, attributes.max 
    from users 
        JOIN groups 
            on users.user_id = groups.userid 
        LEFT JOIN attributes 
            on users.user_id = attributes.userid 
                and attributes.groupid = ?
    where groups.userid = ? 

只需使用....... AND

$check = $members->prepare("select users.fname, users.lname, groups.groupid, attributes.max 
    FROM users 
    JOIN groups 
         ON users.user_id = groups.userid 
         AND groups.userid = ? 
    LEFT JOIN attributes 
         ON users.user_id = attributes.userid 
         AND attributes.groupid = ?

如果您要引用的条件是文字,并且与联接表没有任何关系,则将它们组合在一个where子句中。

select users.fname, users.lname, groups.groupid, attributes.max
from users
   JOIN groups 
        on users.user_id = groups.userid 
    LEFT JOIN attributes 
        on users.user_id = attributes.userid 
where groups.userid = ? and attributes.groupid = ?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM