![](/img/trans.png)
[英]mySQL join three tables and search on several keywords found in one table
[英]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 ";
聽起來像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.