2014-02-24 93 views
1

我想每個預訂的第一天在我的數據庫。左連接獲取分鐘日期

表BOOKINGS是這樣的:

id | id_client_booking | the_date 

表CLIENT_BOOKINGS是

id | etc | etc 
BOOKINGS

每個id_client_booking correponds到CLIENT_BOOKINGS一個id,並且可以有很多的日期。

我想讓每個客戶端預訂的第一次約會。這個選擇只給我所有客戶預訂的第一個日期。我錯過了什麼?

SELECT 
min(the_date) AS start_date, id_client_booking 
FROM `day_bookings`AS db 
LEFT JOIN `client_bookings`AS cb ON db.id_client_booking = cb.id 

也試過:

SELECT 
min(the_date) AS db.start_date, db.id_client_booking 
       ^^    ^^ 
FROM `day_bookings`AS db 
LEFT JOIN `client_bookings`AS cb ON db.id_client_booking = cb.id 

,但給了錯誤:You have an error in your SQL syntax;

回答

1

你缺少一個GROUP BY,試試這個:

SELECT MIN(the_date) AS start_date, id_client_booking 
FROM `day_bookings`AS db 
LEFT JOIN `client_bookings`AS cb 
ON db.id_client_booking = cb.id 
GROUP BY id_client_booking 
+0

+1 g ot it!謝謝! – Rikard

0

您只能使用AS關鍵字來定義表達式或別名名稱。
你不能用它直接指向一列。因此是語法錯誤。

SELECT 
min(the_date) AS db.start_date, db.id_client_booking 
       ^^    ^^ 
FROM `day_bookings`AS db 
LEFT JOIN `client_bookings`AS cb ON db.id_client_booking = cb.id 

它應該是:

SELECT 
min(the_date) AS 'start_date', db.id_client_booking 
FROM `day_bookings`AS db 
LEFT JOIN `client_bookings`AS cb ON db.id_client_booking = cb.id 
1

您需要使用GROUP BY聚合函數,使MIN()作品

SELECT min(the_date) AS start_date, id_client_booking 
FROM `day_bookings` AS db 
LEFT JOIN `client_bookings` AS cb 
ON db.id_client_booking = cb.id 
GROUP BY db.id_client_booking 
+0

+1了!謝謝! – Rikard

+0

歡迎Rikard – Fabio