簡體   English   中英

如何在mysql select語句上聯接4個表?

[英]How do I join 4 tables on mysql select statement?

我在MySQL中有4個表要加入。

$select = $db->query("SELECT * 
                        FROM ads 
                       WHERE ad_pic='1' 
                         AND ad_status = '1' 
                    ORDER BY ad_id DESC LIMIT 0,4");

while ($fetch = $db->fetch($select)) {

    $iquery = $db->query("SELECT * 
                            FROM images 
                           WHERE img_ads_id = '" . intval($fetch['ad_id']) . "' 
                             AND img_status = '1' 
                           LIMIT 1");
    $thumb = $db->fetch($iquery);

    $uselect = $db->query("SELECT * 
                             FROM users 
                            WHERE user_id = '".intval($fetch['ad_userid'])."' 
                              AND user_status = '1' 
                            LIMIT 1");
    $ufetch = $db->fetch($uselect);

    $cselect = $db->query("SELECT * 
                             FROM category 
                            WHERE cat_slug = '".safe_func($fetch['ad_category'])."' 
                            LIMIT 1");
    $cfetch = $db->fetch($cselect);         

}

我想知道在一個select語句中加入這些的方式。


ads table

ad_id   ad_userid   ad_category
-------------------------------
1       2           5

images table

img_id  img_ads_id  
-------------------------------
1       1         

users table

user_id     user_name
-------------------------------
2           John

category table 

cat_id   cat_name
-------------------------------
5        Vehicles       
SELECT *
FROM ads AS a
LEFT JOIN images AS i ON i.img_ads_id = a.ad_id AND i.img_status = 1
LEFT JOIN users AS u ON u.id = a.ad_userid AND u.user_status = 1
LEFT JOIN category AS c ON c.cat_slug = a.ad_category
WHERE a.ad_pic = 1
AND a.ad_status = 1
ORDER BY a.ad_id DESC
LIMIT 0,4

如果廣告必須包含圖片,用戶或類別,則可以使用JOIN代替LEFT JOIN。 如果一則廣告可以包含多個圖片,用戶或類別,則您將需要更復雜的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM