简体   繁体   English

子句在MySQL中离开的地方

[英]Where Clause Left Join in MySQL

Hello guys may I ask where I can put the where clause in a Left Join here on query 大家好,我可能会问我在哪里可以在查询中的左连接处放置where子句

SELECT en.`transid`, en.`transdate`, 
                CONCAT(userlist.lname, ', ', userlist.fname, ' ', userlist.mname) AS sender_name, 
                CONCAT(userlist1.lname, ', ', userlist1.`fname`, ' ', userlist1.`mname`) AS receiver_name,
                en.`document_num`, doctype.`document_type`, vendor.`vendor_name`, acknowledge.`status`
                FROM `tbl_encode_transmittal` en 
                LEFT JOIN `tbl_acknowledgetransmittal` acknowledge ON en.`transid` = acknowledge.`transid`
                LEFT JOIN tbl_userlist userlist ON userlist.userid = en.sender_id
                LEFT JOIN tbl_userlist userlist1 ON userlist1.userid = en.`receiver_id`
                LEFT JOIN `tbl_doctype` doctype ON doctype.`doc_id` = en.`doctype_id`
                LEFT JOIN tbl_vendor vendor ON vendor.`vendor_id` =  en.vendor_id

This is the Where Clause that I will include in my query: 这是我将在查询中包括的Where子句:

WHERE userlist1.userid = 'admin'

You can put it at the end, like others said, or as an "AND" like this: 您可以像其他人所说的那样将其放在结尾,也可以将其作为“ AND”表示:

SELECT en.`transid`, en.`transdate`, 
                CONCAT(userlist.lname, ', ', userlist.fname, ' ', userlist.mname) AS sender_name, 
                CONCAT(userlist1.lname, ', ', userlist1.`fname`, ' ', userlist1.`mname`) AS receiver_name,
                en.`document_num`, doctype.`document_type`, vendor.`vendor_name`, acknowledge.`status`
                FROM `tbl_encode_transmittal` en 
                LEFT JOIN `tbl_acknowledgetransmittal` acknowledge ON en.`transid` = acknowledge.`transid`
                LEFT JOIN tbl_userlist userlist ON userlist.userid = en.sender_id
                LEFT JOIN tbl_userlist userlist1 ON userlist1.userid = en.`receiver_id` AND userlist1.userid = 'admin'
                LEFT JOIN `tbl_doctype` doctype ON doctype.`doc_id` = en.`doctype_id`
                LEFT JOIN tbl_vendor vendor ON vendor.`vendor_id` =  en.vendor_id

It does not matter what join type you use, the where clause follows the from clause and the join conditions: 使用哪种连接类型都没有关系,where子句位于from子句和连接条件之后:

FROM `tbl_encode_transmittal` en 
                LEFT JOIN `tbl_acknowledgetransmittal` acknowledge ON en.`transid` = acknowledge.`transid`
                LEFT JOIN tbl_userlist userlist ON userlist.userid = en.sender_id
                LEFT JOIN tbl_userlist userlist1 ON userlist1.userid = en.`receiver_id`
                LEFT JOIN `tbl_doctype` doctype ON doctype.`doc_id` = en.`doctype_id`
                LEFT JOIN tbl_vendor 4vendor ON vendor.`vendor_id` =  en.vendor_id
WHERE userlist1.userid = 'admin'

You put them after the FROM and JOIN clauses like normal. 您可以像平常一样将它们放在FROMJOIN子句之后。

SELECT *
FROM table1 t1
JOIN table t2 ON t1.id = t2.fk
WHERE t1.whatever = "whatever"

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

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