2009-04-19 80 views
0

我有2個表,使用內部連接來查詢它們。MySQL Help:SELECT table2.id WHERE ... table1.date最大

SELECT COUNT(table2.id) 
FROM table2 
INNER JOIN table1 ON table2.relazioneid = table1.id 
WHERE table1.date > ? AND table1.date < ? 

它計算兩個日期之間的報告條目的ID。表1保存有關報告(日期,組ID等)的信息,表2保存報告中的條目。

我想查詢幾乎完全一樣的,除了它只在這兩個日期之間選擇具有最新日期的報告中的id。

任何人都可以幫忙嗎?我無法理解MAX(日期)類型的查詢 - 我得到的所有數據都是每個ID的計數,也是最大日期,而不僅僅是來自最大日期的那些ID。

感謝,


我一直在想也許一個嵌套的SQL查詢 - 你可以做到這一點?我可以找到關於谷歌的參考,但不能讓它開始工作......類似的東西:

SELECT COUNT(table2.id) 
FROM table2 
INNER JOIN table1 ON table2.relazioneid = table1.id 
WHERE table1.date > ? AND table1.date < ? AND 
(
    SELECT MAX(date) 
    FROM table1 
    WHERE date > ? AND date < ? 
) 

不能得到那個工作,雖然,當我嘗試測試它在phpMyAdmin,它踢我出了一個錯誤,告訴我我的用戶沒有SELECT權限。奇怪,因爲這是一個測試服務器,我以root身份登錄。

+1

你能提供兩個表的結構和哪些信息你想從兩個表中檢索?這將使提供有效的示例代碼變得更加簡單。 – 2009-04-19 17:19:12

回答

0

沒有關於表的結構的進一步信息10個第一排,我建議你嘗試這樣:

SELECT t2.id 
FROM table1 t1 
INNER JOIN table2 t2 ON t1.id = t2.relation_id 
WHERE t1.date BETWEEN ? AND ? 
HAVING MAX(t1.date) 

我的天堂」我們測試了這個,但它應該指出你可以解決這個問題。您使用子查詢的另一項建議是有效的,可能工作是這樣的:

SELECT * 
FROM table2 t2 
WHERE t2.parent_id IN (
    SELECT t1.relation_id 
    FROM table1 t1 
    WHERE t1.date BETWEEN ? AND ? 
    GROUP BY t1.relation_id 
    HAVING MAX(t1.date) 
) 

或JOIN到一個臨時表:

SELECT * 
FROM table2 t2 
INNER JOIN (
    SELECT t1.relation_id 
    FROM table1 t1 
    WHERE t1.date BETWEEN ? AND ? 
    GROUP BY t1.relation_id 
    HAVING MAX(t1.date) 
) AS t1 ON t2.relation_id = t1.relation_id 
-1
...WHERE table1.date BETWEEN'2009-01-01' AND '2009-01-02' ORDER BY table1.date LIMIT 10 

將讓你與日期

+0

不完全是我正在尋找的 - 我需要得到最新的日期,並選擇與該日期的所有ID。 – Dan 2009-04-19 17:12:34

+0

這不是一個答案,而是一個評論。此外,它是MySql語法。 – soulmerge 2009-04-19 17:17:12

相關問題