在一張表格中,我有每天不同組別店鋪的開門和關門時間。在另一張表中,我有不同的產品名稱和銷售的商店。在第三張表中,我有多天所有產品的價格(包括店鋪關閉期間)。在另外兩個不同的表格中過濾信息
只有當相應的商店每天都營業時,我需要一個包含產品價格和名稱的表格。
在更多的細節,我有以下三個表:
碩士學位,列:名稱,代碼,組名。
StatusChange,帶有列:日期,時間,組名,狀態。
價格,與列:日期,時間,代碼,價格。
StatusChange.status列的狀態爲每個組和每天的打開或關閉狀態(組的存儲在不同日期的不同時間打開和關閉,並在不同的時間在不同的時間打開和關閉一天)。
我知道我必須在某個時候使用一些INNER JOIN,但我不知道如何用三個表寫下來。
我第一次開始與以下連接:
(SELECT m.*,s.time, s.date FROM Master AS m
INNER JOIN StatusChange AS s ON m.group_name = s.group_name
WHERE s.status = 'Open' OR s.status = 'close') AS X
這給了我與組名,代碼,日期和時間的表。從這裏我應該可以簡單地再一次加入INNER JOIN並完成。但是,語法是如何工作的?
我嘗試以下,但有一個空的結果:
SELECT p.* FROM Price AS p
INNER JOIN
(SELECT m.*,s.time, s.date, s.status FROM Master AS m
INNER JOIN StatusChange AS s ON m.group_name = s.group_name
WHERE s.status = 'Open' OR s.status = 'close') AS X
ON X.date = p.date AND X.code = p.code
WHERE (X.time < p.time AND X.statis = 'Open')
OR (X.time > p.time AND X.statis = 'Close')
任何建議,在這部分我我犯了一個錯誤?
許多術語的含義很不明確:「statuschange」的含義是什麼? 「價格」的含義是什麼?什麼意思*每天開放?也許一個例子會揭示這一點。 –
您需要編寫一個子查詢,爲您提供group_name,open_time和close_time。 –
這樣的事情:http://stackoverflow.com/questions/15161262/merge-adjacent-rows-in-sql 你有一個,假設它是名字「t」,你可以INNER JOIN t ON group_name。然後你可以對開放/關閉時間的每個部分說出WHERE(p.time> = t.open AND p.time