簡體   English   中英

如何建立一個可以連接三個表並檢測一個表是否有我的商品的mysql連接

[英]How to make a fancy mysql join that can join three tables and detect if one table DOESNT have my item

php mysql query我有多個鏈接表-我也有一個表,該表僅在存在certian條件的情況下創建和輸入,因此我想將其添加到我的查詢中,以避免必須通過數千次查詢來查找這種特殊情況

這是我當前的查詢

$query = "SELECT a.UUID FROM contract a 
        INNER JOIN geoPoint b ON a.customer_UUID = b.customerUUID
        WHERE b.garcom_UUID = '$garbCom'
        AND b.city_UUID = '$city'";

然后,我檢查返回的每個項目(以千計)

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
    $sentdata = getothertable($row['UUID']); //checks if the item is in the table
             $sent = $sentdata ['senttoGarcom'];
             if($sent == 0) //if it wasn't found add it to my list
    {
       array_push($Contracts,$row['UUID']);
    }
    }

而不是我只想對其進行查詢的所有內容-pseduo代碼如下所示

 $query = "SELECT a.UUID FROM contract a 
            INNER JOIN geoPoint b ON a.customer_UUID = b.customerUUID
            INNER JOIN contract_sales c ON a.UUID = c.contractUUID
            WHERE b.garcom_UUID = '$garbCom'
            AND b.city_UUID = '$city' AND c.DOESNOTEXIST";

這樣,我不必退還數千美元,我將只退還contract_sales表中還沒有的幾筆,我可以從事我的事業...

感謝任何幫助!

只需檢查帶有outer join聯接的c的NULL

$query = "SELECT a.UUID FROM contract a 
        INNER JOIN geoPoint b ON a.customer_UUID = b.customerUUID
        LEFT OUTER JOIN contract_sales c ON a.UUID = c.contractUUID
        WHERE b.garcom_UUID = '$garbCom'
        AND b.city_UUID = '$city' AND c.contractUUID IS NULL ";

我認為這是一個左外部聯接問題

看這個例子。 您特別需要在要查找丟失的行rof的表中的列中檢查是否為null

mysql左外連接

聽起來像NOT EXISTS相關子查詢就是您所需要的:

$query = "SELECT a.UUID FROM contract a 
            INNER JOIN geoPoint b ON a.customer_UUID = b.customerUUID
            WHERE b.garcom_UUID = '$garbCom'
            AND b.city_UUID = '$city' 
            AND NOT EXISTS (SELECT 1 
                              FROM contract_sales c
                              WHERE c.contractUUID = a.UUID)";

暫無
暫無

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

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