Witam
Mam następująca tabelę phone_numbers posiadającą strukturę
pk: id
user_id
phone_type (ENUM: phone_a, phone_b, phone_c)
phone_number
Chce jako wynik otrzymać tabelę, gdzie będą wszyscy użytkownicy i trzy kolumny zawierające kolejne numery telefonów użytkowników, tj. user_id, phone_a, phone_b, phone_c
Każdy user może mieć max jeden numer tego samego typu
Udało mi się to zrealizować zapytaniem:
SELECT DISTINCT phone_numbers.user_id, pa.phone_a, pb.phone_b, pc.phone_c
FROM phone_numbers
LEFT JOIN (SELECT user_id, phone_number AS phone_a FROM phone_numbers WHERE phone_type = "phone_a") AS pa ON phone_numbers.user_id = pa.user_id
LEFT JOIN (SELECT user_id, phone_number AS phone_b FROM phone_numbers WHERE phone_type = "phone_b") AS pb ON phone_numbers.user_id = pb.user_id
LEFT JOIN (SELECT user_id, phone_number AS phone_c FROM phone_numbers WHERE phone_type = "phone_c") AS pc ON phone_numbers.user_id = pc.user_id
ORDER BY phone_numbers.user_id
Pytanie, czy można to zrobić w jakiś bardziej elegancki sposób, bez używania DISTINCT