0

私はかなり単純なクエリを念頭に置いています:

3 つのテーブルがあり、各テーブルで使用されている (外部キーを持つ) 行の数を返したいと考えています。

これは私の最初の試みでした:

    SELECT 
        COUNT(at.code) AS atcount, 
        COUNT(de.code) AS decount, 
        COUNT(ch.code) AS chcount 
    FROM 
        table_at at, 
        table_ch ch, 
        table_de de 
    WHERE 
        at.teilnehmerid != 0
    AND
        de.teilnehmerid != 0
    AND
        ch.teilnehmerid != 0

しかし、これはどういうわけか機能せず、エラーは発生しませんが、条件は考慮されていません。次のようなサブクエリについても考えました。

    SELECT 
        (SELECT COUNT(code) FROM table_at at WHERE at.teilnehmerid != 0), 
        (SELECT COUNT(code) FROM table_de de WHERE de.teilnehmerid != 0), 
        (SELECT COUNT(code) FROM table_ch ch WHERE ch.teilnehmerid != 0)

しかし、私はこの試みでかなりばかげたことについて混乱していました...どうFROMですか?もちろん、エラーが発生しています: Operand should contain 1 column(s)-しかし、カウントが必要なだけです...

Joins についても読みましたが、メインステートメント内でCOUNTviaを取得する方法がわかりませんでした。JOINSELECT

そして、ええ、私はここでいくつかの他の質問を読みましたが、両方の問題に当てはまる答えは見当たりませんでした:

  • 複数のテーブルの選択

  • 複数COUNTのテーブルで

私が間違っていて、正しい答えが得られなかった場合は、より良い説明が役立つかもしれません。

4

3 に答える 3

1

COUNT()単一の行、単一の列を返すので、どうですか、

SELECT * 
FROM
(SELECT COUNT(code) FROM table_at at WHERE teilnehmerid != 0) as T1, 
(SELECT COUNT(code) FROM table_de de WHERE teilnehmerid != 0) as T2, 
(SELECT COUNT(code) FROM table_ch ch WHERE teilnehmerid != 0) as T3

ここで、結合は1行を返します。

于 2012-10-17T11:11:28.717 に答える