私は3つのテーブルを持っています。最初は account テーブル、次に contact テーブル、phone テーブルです。
ここに書き込もうとしているクエリの要件は、特定のアカウントについて、主要な連絡先とそのすべての電話番号を一番上に表示し、残りの連絡先を名前順に表示することです。また、電話機は事前定義された順序で表示される必要があります。最初に自宅の電話番号、次に勤務先の電話番号など。
これは私がこれまでに持っているものです
SELECT c.ContactID, c.FullName, p.PhoneCategory, p.Phone, a1.MainContactID
FROM Contact c
JOIN Phone p ON p.ContactID = c.ContactID
JOIN Account a1 ON a1.AccountID= c.AccountID
WHERE a1.AccountID= 1000
ORDER BY
c.FullName,
CASE PhoneCategory
WHEN 'Home Phone' THEN 1
WHEN 'Business Phone' THEN 2
WHEN 'Cell Phone' THEN 3
WHEN 'Fax' THEN 4
WHEN 'Other Phone' THEN 5
WHEN 'Email Address' THEN 6
WHEN 'E-Mail' THEN 6
END
これを実行すると、リストが名前でソートされ、番号も正しい順序で表示されます。唯一の問題は、メインコンタクトを一番上に表示する方法を判断できないことです
編集: a1 の代わりに c1.MainContactID を入力しました