2015-11-06 78 views
0

符合我的MySQL查詢作爲獲取從一個表中的所有行提供一定的條件下,從另一個表在MySQL

var query = "SELECT * FROM drivers WHERE status = 1 AND lat BETWEEN " + min_lat + " AND " + max_lat + " AND lng BETWEEN " + min_lon + " AND " + max_lon + " AND isAvailable = 1 LIMIT 1"; 

我想補充一個條件。假設我有一個命名爲

booking 
driverId bookingStatus 

現在我想用上面的查詢+條件的所有驅動程序,預訂錶行數應該是0,其中bookingStatus小於3臺,driverId存在於預訂表

回答

1

左參加預訂中的驅動程序表,並在連接條件中的bookingstatus字段上過濾預訂。如果預訂表中沒有符合條件的此行,則結果集中的預訂表中的driverid將爲空。

SELECT d.* 
FROM drivers d 
LEFT JOIN booking b ON d.driverid=b.driverid and b.bookingStatus<3 
WHERE d.status = 1 AND d.lat BETWEEN ... AND ... 
     AND d.lng BETWEEN ... AND ... 
     AND d.isAvailable = 1 
     AND b.driverid is null 
LIMIT 1 

如果你特別需要檢查,如果在預定表中存在的驅動程序,然後添加一個子查詢存在的地方條件。

相關問題