我有以下問題: 我想指望在一個表中的數據,算上第二表數據和having子句比較countings,並且只顯示具有相同countings 類似的東西行:2X COUNT在HAVING子句
SELECT bla
FROM T1 t1 JOIN T2 t2
ON t1.id = t2.id
HAVING COUNT(counted data from table1) = COUNT(counted data from table2)
你有什麼想法嗎? 乾杯
我有以下問題: 我想指望在一個表中的數據,算上第二表數據和having子句比較countings,並且只顯示具有相同countings 類似的東西行:2X COUNT在HAVING子句
SELECT bla
FROM T1 t1 JOIN T2 t2
ON t1.id = t2.id
HAVING COUNT(counted data from table1) = COUNT(counted data from table2)
你有什麼想法嗎? 乾杯
標準SQL:
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) AS t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) AS t2
ON t1.id = t2.id AND t1.counter = t2.counter
的Oracle SQL(因爲Oracle不表別名之前像):
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) t2
ON t1.id = t2.id AND t1.counter = t2.counter
你只需要決定在哪裏bla
來自;我提名t1
。我假設對於任何給定的值t1.id
,存在單個值t1.bla
。如果沒有,那麼你需要更清楚地解釋你正在計算的內容以及各個列的位置,以及表格的關鍵字。
更新:抱歉,不注意到Oracle標記並給出無效的Oracle語法。
我這樣做了,但我有一個錯誤(第5行,第9列,SQL命令未正確結束) 'SELECT jezyki.pseudo_wampira,sprawnosc.counter FROM(SELECT pseudo_wampira,COUNT(*)AS counter FROM Jezyki_obce_w GROUP BY pseudo_wampira )AS jezyki JOIN(SELECT pseudo_wampira,sprawnosc,COUNT(*)AS計數器 FROM Sprawnosci_w GROUP BY pseudo_wampira,sprawnosc )AS sprawnosc ON(jezyki.pseudo_wampira = sprawnosc.pseudo_wampira和jezyki.counter = sprawnosc.counter)' 你看到那個錯誤嗎? – robocoder 2012-04-10 16:55:24
對不起,我在編寫評論時遇到了問題。代碼有像你這樣的表;第五行是「)AS jezyki」 – robocoder 2012-04-10 16:56:04
@robocoder - Oracle不允許你爲表別名使用'AS',儘管它爲列別名提供了服務。嘗試刪除那個單詞,所以第5行變成了')t1'和第9行't2'。 – 2012-04-10 17:18:08
WITH jezyki as
(SELECT pseudo_wampira, COUNT(*) AS counter
FROM Jezyki_obce_w
GROUP BY pseudo_wampira
)
,sprawnosc as
(SELECT pseudo_wampira, sprawnosc, COUNT(*) AS counter
FROM Sprawnosci_w
GROUP BY pseudo_wampira, sprawnosc
)
SELECT jezyki.pseudo_wampira, sprawnosc.counter
FROM jezyki,sprawnosc
WHERE jezyki.pseudo_wampira = sprawnosc.pseudo_wampira
AND jezyki.counter = sprawnosc.counter
計數什麼?從T1中選擇count(*)將返回總行數,並且不能將其應用於檢查其他表中的行,您能否詳細說明一下? – Habib 2012-04-10 16:13:54