Backgroud
По сути, я хочу хранить что-то вроде:
{
id : 1,
name : 'john',
favorite_pets : ['cat', 'dog'],
favorite_colors : ['red', 'white', 'green']
}
В реляционной базе данных с тремя таблицами:
Стол основной:
id name
1 John
Таблица fav_pets:
id pet
1 cat
1 dog
Таблица fav_colors:
id pet
1 red
1 white
1 green
Задача
Я хочу запрос SQL, который возвращает это:
id name pet color
1 john cat red
1 john dog white
1 john null green
Проблема в том, что если я сделаю:
select * from main
outer join fav_pets on main.id=pet.id
outer join fav_colors on main.id=fav_colors.id;
Будет возвращен набор результатов с 6 строками:
id name pet color
1 john cat red
1 john cat white
1 john cat green
1 john dog red
1 john dog white
1 john dog green
Можно ли выполнить загрузку объекта без повторения строк в одном запросе SQL?