小さなデータベースから連絡先のリストを取得する SQL クエリがあります。それはデータをうまく引き出します。ただし、SQL の問題は、連絡先に関連付けられている電子メールとアドレスの数に応じて、同じ連絡先が複数回リストされることです。
一度だけリストすることになっています。ここに私が書いたSQLがあります:
SELECT DISTINCT
Contact_Main.contactid, first_name, last_name, p_title,
prefix, suffix, email, address1, address2,
city, state, zip, Contact_Address_Type.addresstype,
Contact_Email_Types.emailtype,
addressid, emailid, Contact_Address_Type.addresstypeid,
Contact_Email_Types.emailtypeid,
(SELECT COUNT(addressid)
FROM Contact_Address
WHERE contactid = Contact_Main.contactid) as num_addresses,
(SELECT COUNT(emailid)
FROM Contact_Email
WHERE contactid = Contact_Main.contactid) as num_emails
FROM Contact_Main
LEFT JOIN Contact_Email ON Contact_Main.contactid =
Contact_Email.contactid
LEFT JOIN Contact_Email_Types ON Contact_Email_Types.emailtypeid =
Contact_Email.emailtypeid
LEFT JOIN Contact_Address ON Contact_Address.contactid =
Contact_Main.contactid
LEFT JOIN Contact_Address_Type ON Contact_Address_Type.addresstypeid =
Contact_Address.addresstypeid
ORDER BY last_name, first_name;
これは単純な修正であり、これの一部をサブクエリにする必要があると確信していますが、何らかの理由でそれを理解できません。