2011-12-12 58 views
0

我有一個相當複雜的SQL查詢,我正在尋找一些幫助。使用來自單獨表的信息的MySQL查詢

我有兩個表:歷史表和詳細信息表。

歷史記錄表格包含以下列。

Event Date(ev_date) 
Event Code(ev_code) 
Machine ID(mc_id) 

的詳細信息表包含以下幾列:

Machine ID(mc_id), 
Location ID(lo_id) 
Machine Name(mc_name) 

我需要返回的事件數的計數從歷史表一組給定的機器給定日期範圍之間的查詢由位置ID給出。

所以,還挺在須藤代碼:

SELECT COUNT(*) 
FROM history 
WHERE ev_date (BETWEEN start_date AND end_date) AND ev_code = 1 AND ???? 

(mc_id必須從細節表中的某些lo_id)。

這是否有意義?

由於

回答

1
SELECT COUNT(*) 
    FROM history h 
    WHERE h.ev_date BETWEEN @start_date AND @end_date 
     AND ev_code = 1 
     AND EXISTS(SELECT NULL 
         FROM details d 
         WHERE h.mc_id = d.mc_id 
          AND d.lo_id = @LocationID); 
+0

工作很好。謝謝 – jomille

1

假設您有mc_idhistorydetails之間有一個一對一映射:的

SELECT COUNT(*) 
FROM history h 
JOIN details d USING mc_id 
WHERE h.ev_code = 1 
AND h.ev_date between start_date and end_date 
AND d.lo_id IN (?, ?, ?, ...) 

備選地ON h.mc_id = d.mc_id代替USING mc_id

+0

我也必須嘗試這一個。感謝您的迴應。 – jomille

相關問題