2017-01-30 7 views
-1

この質問は何度も尋ねられていますが、他の人のために働いていた解決策は私のために働いていないようです。複数のテーブルのSQL

私は8つのテーブルを持っており、私はすべての8つのテーブルにIDのカウントを取得しようとしています。

私のコードは次のとおりです。

SELECT cs.SYS_LOC_CODE INTO tmp_FINAL 
FROM dt cs 
    INNER JOIN table1 fv 
    ON cs.ID = fv.ID 
    INNER JOIN table2 v3 
    ON ff.ID = v3.ID 
    INNER JOIN table3 ppi 
    ON v3.ID = ppi.ID 
    INNER JOIN table4 pu 
    ON ppi.ID = pu.ID 
    INNER JOIN table5 s 
    ON pu.ID = s.ID 
    INNER JOIN table6 t 
    ON s.ID = t.ID 
    INNER JOIN table7 sv1 
    ON t.ID= sv1.ID; 

は、その後、私はテーブルの上にCOUNT(*)を行うと、私はそれが最低限のテーブルサイズの数を超えているためあまりにも大きい数を取得します。

ありがとうございました。

+0

ウェルコム私はここにカウントが表示されませんが、私は実際にあなたが試していたクエリではない感じを持っています。私の推測では、いくつかの結合されたテーブルに複数の行があるので、あなたの数はあなたが考えるべきものではありません。ここであなたの質問を改善するのに最適な場所です。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

テーブルの関係は必ずしも1:1ではなく、1:多くの関係、また多対多の関係。 SQLへようこそ。 – SqlZim

答えて

0

はこれを試してください:あなたは別のテーブルから同じIDが複数回カウントされていることをしたくない場合は

WITH IDS AS (
SELECT COUNT(ID) AS IDCOUNT FROM table1 
UNION ALL 
SELECT COUNT(ID) AS IDCOUNT FROM table2 
UNION ALL 
... 
UNION ALL 
SELECT COUNT(ID) AS IDCOUNT FROM table8 
) 
SELECT SUM(IDCOUNT) FROM IDS 

は「UNION」による「UNION ALL」ステートメントを交換してください。 1つのテーブル内の同じIDが複数回カウントされないようにするには、「COUNT(ID)」を「COUNT(DISTINCT ID)」に置き換えます。

関連する問題