0

では、「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

それが何か意味があるなら...

4

1 に答える 1

1

列の2つのテーブルを結合しません

SELECT a.C, COUNT(*) FROM TableA a JOIN TableB b ON (C = D)
WHERE E GROUP BY a.C
ORDER BY COUNT(*) DESC
于 2013-05-19T00:41:19.653 に答える