ユーザーの3つの電話番号を1つの行にまとめる必要があります。最終結果は次のようになります
contactId | 電話| モバイル| ファックス
私のテーブルはこのように見え、電話番号はphoneTypeIdによって独自の行に分割されています
contact_phone_link
contactId | contactPhoneNumberId
3344 | 1
contact_phone_numbers
id | phoneTypeId | 電話番号
123| 1 | 555-555-5555
phone_types
id | phoneTypeName
1 | 電話
2| モバイル
3| ファックス
ダナはあなたの助けに感謝します、私はこれを理解することに近づいています。グループ化と命名、そして再びグループ化する方法がわかります。
構文を確認して調整しましたが、「phone_link.phoneTypeId」に到達する際にまだ問題があります。'contact_phone_link'が'phoneTypeId'を保持していないためだと思います。また、SELECTセクションとJOINセクションが「phone」のように同じ変数名を持っているとハングアップするので、1を追加しました。
離れているかどうか教えてください。
SELECT
`ct`.`id` AS contact_id,
`phone1`.`lineNumber` AS phone,
`fax1`.`lineNumber` AS fax,
`mobile1`.`lineNumber` AS mobile
FROM `cmd`.`contacts` AS ct
LEFT JOIN `cmd`.`contact_phone_link` AS `phone_link` ON (`phone_link`.`contactId` = `ct`.`id` AND `phone_link`.`phoneTypeId` = 1)
LEFT JOIN `cmd`.`contact_phone_numbers` AS `phone1` ON (`phone`.`id` = `phone_link`.`contactPhoneNumberId`)
LEFT JOIN `cmd`.`contact_phone_link` AS `fax_link` ON (`fax_link`.`contactId` = `ct`.`id` AND `fax_link`.`phoneTypeId` = 2)
LEFT JOIN `cmd`.`contact_phone_numbers` AS `fax1` ON (`fax`.`id` = `fax_link`.`contactPhoneNumberId`)
LEFT JOIN `cmd`.`contact_phone_link` AS `mobile_link` ON (`mobile_link`.`contactId` = `ct`.`id` AND `mobile_link`.`phoneTypeId` = 3)
LEFT JOIN `cmd`.`contact_phone_numbers` AS `mobile1` ON (`mobile`.`id` = `mobile_link`.`contactPhoneNumberId`)
WHERE (`ct`.`id` = 4160);