Разделение данных в строке на несколько столбцов - PullRequest
0 голосов
/ 15 февраля 2019

Я относительный новичок в MySQL.Я экспериментировал с выборками и объединениями для фильтрации и объединения данных из разных таблиц.Одна вещь, с которой я борюсь, это как вывести более одной строки для одной строки.

Вот пример, который я создал, чтобы описать, что я пытаюсь сделать.Человек может иметь от 0 до 3 телефонных номеров.

ID     First  Last  Bus Phone    Home Phone   Mobile Phone

40550  Ed     Zo    555-145-7424 333-743-1233 123-456-7890
46476  Rui    Jun   234-567-8901 345-678-9012   
26480 Matt    Del                             222-333-4444

Я хотел бы создать 1 строку вывода для каждого телефонного номера, который есть у человека.

ID      First   Last    PhoneType           Number
40550   Ed    Zo          B             555-145-7424
40550   Ed    Zo          H             333-743-1234
40550   Ed    Zo          M             123-456-7890
46476   Rui   Jun         B             234-567-8901
46476   Rui   Jun         H             345-678-9012
26480   Matt  Del         M             222-333-4444

Какие операторы SQL мне следует рассмотреть?Любые указатели будут с благодарностью.

Спасибо!

MG

1 Ответ

0 голосов
/ 15 февраля 2019

В MySQL самый простой подход - union all:

select id, first, last, 'B' as phoneType, bus_phone
from t
where bus_phone is not null
union all
select id, first, last, 'h', home_phone
from t
where home_phone is not null
union all
select id, first, last, 'M', mobile_phone
from t
where mobile_phone is not null;
...