简体   繁体   English

如何在SQL中联接3个表

[英]How can I join 3 tables in SQL

Here is the query I created : 这是我创建的查询:

$query = "SELECT address_details.company, address_details.po_box, 
                 address_details.town, letter_details.address_id, 
                 letter_details.attn, letter_details.create_date,
                 letter_details.ref_no, letter_details.refference, 
                 letter_details.letter_body, letter_details.print_date 
          FROM letter_details 
            join address_details ON address_details.id = letter_details.address_id
            join signatories ON (letter_details.id = signatories.id) 
          WHERE letter_details.id='" .$_GET['id'] . "'";

Try using this query. 尝试使用此查询。

$query = "SELECT ad.company, ad.po_box, 
                 ad.town, ld.address_id, 
                 ld.attn, ld.create_date,
                 ld.ref_no, ld.refference, 
                 ld.letter_body, ld.print_date 
          FROM letter_details ld 
          left join address_details ad ON (ad.id = ld.address_id)
          left join signatories s ON (ld.id = s.id) 
          WHERE ld.id='" .$_GET['id'] . "'";

First, you should alias for better readibility, 首先,您应该使用别名以提高可读性,

check if you get something in $_GET[id] 检查您是否在$ _GET [id]中得到了东西

    echo $_GET[id];

then assign it, (or you may set it as well, if you're using a class) 然后分配它(或者,如果您使用的是类,也可以对其进行设置)

    $fltr = $_GET[id];

And, try to use LEFT JOIN ; 并且,尝试使用LEFT JOIN;

    SELECT   b.company,     b.po_box, 
             b.town,        a.address_id, 
             a.attn,        a.create_date,
             a.ref_no,      a.refference, 
             a.letter_body, a.print_date 
    FROM     letter_details AS a LEFT JOIN address_details AS b ON b.id = a.address_id
                                 LEFT JOIN signatories     AS c ON (a.id =c.id) 
    WHERE    a.id='$fltr'

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

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