2013-09-24 47 views
1

SQL中有一種標準方法來連接加入到一個表中的多個行,同時還獲得0? 這是一個例子:SQL - 左外部連接的替代方法

SELECT t1.id, COUNT(t2.*) 
FROM t1 LEFT OUTER JOIN t2 ON (t1.id = t2.id) 
GROUP BY t1.id 

我需要一個選擇,因爲我使用ODBC與不同的數據庫,並在某些數據庫連接中不支持的左側。

+1

可能是'SELECT t1.id,(select COUNT(t2。*)where t2.id = t1.id)as t2_count FROM t1'? – ThinkJet

+1

@ThinkJet你應該將它作爲回答 –

+0

@ t-clausen.dk好的,完成。但對於正常答案來說太短:) – ThinkJet

回答

6
SELECT 
    t1.id, 
    (SELECT COUNT(*) FROM t2 WHERE t2.id = t1.id) as t2_count 
FROM t1 
+0

@ t-clausen.dk感謝您的編輯! – ThinkJet

+0

Thx!我嘗試,如果這是支持在MySQL,訪問,SQL服務器和甲骨文,因爲是我使用的數據庫。 – pava91

0

兩個選項: 選項1:使用(+)操作符:

SELECT t1.id, COUNT(t2.*) 
    FROM t1, t2 
WHERE t2.id(+) = t1.id 
GROUP BY t1.id 

我不;知道它是否適用於所有的驅動程序。與所有驅動程序配合使用的選項2是創建視圖並創建視圖。

+1

它僅適用於oracle – pava91