では、「TableA」と「TableB」という 2 つのテーブルがあるとします。表 AI には列「C」があり、表 BI には列「D」と列「E」があります。
TableA には、列 C に同じ値を含むことができる多くの行が含まれています。TableB には多くの行が含まれていますが、列 D は一意である必要があります (これは自動インクリメント番号です)。TableB の列 E にも、異なる行に同じ値を含めることができます。同様に、列 C と列 D には同じ数値が含まれます。
例の表
TableA
ID C
----------
1 1
2 1
3 2
TableB
D E
----------
1 1
2 0
3 0
今、私がやりたいことは、列 C の TableA のすべての行を数えることです。これを行う方法を理解しました。ただし、結果として、D の同等の値の E も「1」である C のカウントのみを結果として提供することも望んでいます。
それで、私はこれを試しましたが、失敗していて、自分が間違っていることや修正方法がわかりません。COUNT をグーグルで検索しても、1 つのテーブルを扱った結果しか得られません。
私の例では、E = 1のTableB列Dで一致するID番号をCOUNT Cにして(つまり、TableB列D = 1の場合)、それをカウントとして返すので、私に返してほしい(またはこの趣旨の何か):
c COUNT(*) 降順 1 2
SELECT TableA.C, COUNT(*) FROM TableA, TableB WHERE TableB.E = 1 GROUP BY TableA.C ORDER BY COUNT(*) DESC
それが何か意味があるなら...