Table_2に正確にn個のエントリを持っているのtable_1内のエントリを表示するには?

combativeAlpaca:

私はちょうど道を尋ねますので、一般的な方法でこの質問をするかどうかは全くわからないので、その私に提示されて。2つの関連テーブルは以下のとおりです。

Manager (
    ID: integer, 
    LoginID: varchar(16), 
    Name: varchar(64), 
    Password: varchar(8), 
    Birthday: date, 
    Address: varchar(128), 
    Email: varchar(32), 
    PhoneNumber: char(10)
)  

ManagerCertificate (
    ManagerID: integer, -- Foreign key: ManagerID references Manager(ID) 
    CertificateId: integer, 
    Certificate: blob
)

正確に3つの異なる証明書を持っているすべての管理者の名前と電子メールを表示します。

私はいくつかのことを試してみたが、私は失敗し続けます。私は多分、ネストされたサブクエリ、カウント演算子を使用しています...

select M.Name, M.Email
from Manager M, ManagerCertificate MC
??? where MC.ManagerID = M.ID    ???

私は正しい方向に指摘されるように探しています。私はこれを複雑オーバーかもしれません。

感謝

ニック:

A JOINとは、COUNT管理者の名前と電子メールでのグループ化とチェック(使用して、これを行うための一つの方法であるHAVINGマネージャーは正確に3つの異なる証明書を持っていること)。)MySQLは<5.7がM.ID上のグループにあなたを許すだろうが、それはそれ以降のバージョンになりますまだ仕事書き込みクエリに好適であることに注意してください。また、その明示的な注意JOIN(と構文ON節)は古いスタイルのコンマに参加することが好ましいです。

SELECT M.Name, M.Email
FROM Manager M
JOIN ManagerCertificate MC ON MC.ManagerID = M.ID
GROUP BY M.Name, M.Email
HAVING COUNT(DISTINCT MC.CertificateId) = 3

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=8983&siteId=1