我們正在做一些專業的骨骼工作,爲了一個好的原因,我有一個查詢的時間。許多志願者多年來一直在進行這種編碼,這是不可避免的結果。沒有得到我想要的加入
我有兩個表,A和B.我需要的是score_hours對兩個地方的數據僅用於A的每個實例獨特的之間的連接之
請記住,這兩個表格非常大(根據每月的時間,每個表格有10到50k +)。
表A:
- ID(PK,AI)
- UID(INT)
- scores_date(時間戳(但出於某種原因,只有實際的日期,而不是 時間))
- score_hours(十進制3,1)
表B:
- ID(PK,AI)
- UID(INT)
- shift_date(時間戳)
有表B中多條記錄這是我們正在尋找的幾個日期(的的UID日期不是唯一的)。表A有多個uid記錄,但在不同日期。所以它每天可能有一天,但不是一天兩次。
這兩個表格顯然有更多的選擇器,但它們在表格之間沒有任何匹配(儘管我需要用簡單的「AND」來查詢它們),所以這是我必須處理的。由於查詢的其餘部分,我確實需要加入它們,但到目前爲止,我沒有在體面時間內獲得所需的記錄。
我的嘗試是:
這幾乎成了它。但是執行時間令人厭惡,並且因一些簡單的選擇器而失敗。
SELECT SUM(score_hours)
FROM A
WHERE
A.uid IN
(SELECT B.uid
FROM B
WHERE B.uid = "1")
這給出了正確的輸出,但它爲每個uid的實例加入一個輸出。通常你可以通過分組來解決這個問題,但總和仍然會計算所有的數據。所以這不是一個選項:
SELECT SUM(score_hours)
FROM A
LEFT JOIN B ON A.uid = B.uid
WHERE A.uid = "1"
*編輯:我不僅需要加入的UID,但必須有這樣的事情在裏面:
DISTINCT(date(m.shift_datum)) = DATE(d.dagscores_date)
這其實是一個很基本查詢,除了在關於左連接的記錄上需要一個SUM並且我需要同時在兩個表上加入的事實之外。
如果您需要更多數據,請告訴我。我可以提供所有。
您可以添加一些示例數據和預期的輸出嗎?可以幫助澄清你想要達到什麼目的;-) – svvac