2015-05-26 96 views
1

您好,我有兩個SQL查詢,我想合併或結合他們合併兩個SQL查詢選擇和計算

查詢1:

Select TableA.Name, TableB.Date 
from TableA, TableB 
where ID = ID_used; 

QUERY2:

SELECT count(Date) 
FROM (SELECT DISTINCT Date 
     FROM TableA, TableB 
     group by Date; 

我嘗試:

Select TableA.Name, TableB.Date 
    from TableA, TableB 
    where ID=ID_used inner join (SELECT count(Date) 
           FROM (SELECT DISTINCT Date 
            FROM TableA, TableB 
            group by Date) 

但它給出了語法呃在聯合查詢中。

結果我需要:名稱,計數結果。

任何想法?

測試數據:

TableA 
    --------------------- 
    Name   ID 
    --------------------- 
    John   1001 
    Peter   1002 

    TableB 
    ----------------------- 
    Date   ID_used 
    ----------------------- 
    2015.05.01.AM 1001 
    2015.05.01.AM 1001 
    2015.05.01.AM 1002 
    2015.05.01.PM 1001 
    2015.05.01.PM 1001 
    2015.05.01.PM 1002 
    2015.05.01.PM 1002 
    2015.05.02.PM 1002 

結果是:

John  2 
    Peter  3 
+2

你能顯示一些數據和預期的結果嗎?在執行GROUP BY之前,查詢#2產生一個CROSS JOIN。 – dnoeth

+0

你是否只需要結果中每一行的結果相同(總共有多少個目標日期)? –

+0

提示:計數(和計數)。數字必須匹配! – jarlh

回答

0

這將返回不同的日期從tableB的計數爲TableA中每個名稱:

Select a.Name, COUNT(DISTINCT b.Date) 
from TableA AS a JOIN TableB AS b 
ON ID=ID_used 
group by a.Name 
+0

語法錯誤缺少運算符在查詢表達式'count(distinct b。date)'可能是什麼問題? – Zoltan

+0

@Zoltan:MS Access不支持聚合中的DISTINCT,請嘗試使用Jeremy C.的答案 – dnoeth

+0

這不適用於MS Access: – Zoltan

-1

列名

Select TableA.Name,TableB.Date from TableA, TableB where ID=ID_used; 
+0

這將如何解決原始問題?甚至不會談論使用舊式連接,也不會在條件和其他問題中使用別名。 – Arvo

+0

我在編輯他的問題之前發佈了我的建議。現在我的答案是無關緊要的,因爲問題已經改變了。 – Smila

+0

好的,編輯你的答案然後 - 或者完全刪除它。 – Arvo

1

你需要什麼我的理解是之前使用tablename是這樣的: (儘管我不確定,因爲您沒有添加測試數據和預期結果)

選擇t1.Name,t2.Date, (SELECT COUNT(日期) 從(選擇不同的日期從 TableA的,TableB中 GROUP BY日期))作爲datecount 從表A T1 加入表B T2 上t1.ID = t2.ID_used

更新:我覺得這是你在找什麼:SQLFIDDLE

select t1.id, t1.name, count(t2.Date) 
FROM TableA t1 
JOIN (
SELECT Distinct id_used,Date 
FROM TableB) t2 
ON t1.id = t2.id_used 
GROUP by t1.id 

編輯:我在MS Access 2010嘗試這樣做:

注:我不能使用關鍵字日期爲使改爲指明MyDate

select t1.id, t1.name, count(t2.mydate) as datecount 
FROM TableA t1, 
(SELECT Distinct id_used,mydate 
FROM TableB) t2 
WHERE t1.id = t2.id_used 
GROUP by t1.id,t1.name 

這工作一欄的名字,但我不建議使用連接沒有加入或關鍵字所以這裏是一個能夠更好地讀取和也適用:

select t1.id, t1.name, count(t2.mydate) as datecount 
FROM TableA t1 
INNER JOIN (
SELECT Distinct id_used,mydate 
FROM TableB) t2 
ON t1.id = t2.id_used 
GROUP by t1.id,t1.name 
+0

謝謝。但是sql測試在'From'語法中寫了一些錯誤 – Zoltan

+0

它可能在子查詢中,你在測試你的子查詢之前發佈它嗎?它是否返回數據? –

+0

你可能會設置一些測試數據,我剛剛閱讀你的編輯,這可能不是你需要的東西 –