sql получить описание 2 столбца на 1 таблице - PullRequest
0 голосов
/ 18 октября 2018

У меня есть 2 таблицы:

автомобиль

ID    Desc
1     BMW
2     Audi

пользователь

ID   Name    ID_car1     ID_car2
1    Jack       1           2

ДанныеПредставление

ID    Name   ID_car1   Desc_car1    ID_car2    Desc_car2
1     Jack      1          BMW        2           Audi

Как запросить отображение desc_car1 и desc_car2 в представлении данных?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Используя ваши последние данные, мы можем получить представление данных с помощью запроса, например:

select u.ID, u.Name,
  u.ID_car1, c1.Desc Desc_car1,
  u.ID_car2, c2.Desc Desc_car2
from user u
  join car c1 on u.ID_car1=c1.ID
  join car c2 on u.ID_car2=c2.ID;
0 голосов
/ 18 октября 2018

В идеале должна быть третья таблица junction , в которой сохраняются отношения между пользователями и автомобилями.Если вы хотите, чтобы литеральный запрос генерировал вышеуказанный вывод в отсутствие такой таблицы, то нам пришлось бы использовать перекрестное соединение между car и user, потому что других отношений не существует:

SELECT
    u.ID,
    u.Name,
    MAX(CASE WHEN c.ID = 1 THEN c.ID END) AS ID_car1,
    MAX(CASE WHEN c.ID = 1 THEN c.`Desc` END) AS Desc_car1,
    MAX(CASE WHEN c.ID = 2 THEN c.ID END) AS ID_car2,
    MAX(CASE WHEN c.ID = 2 THEN c.`Desc` END) AS Desc_car2
FROM car c
CROSS JOIN user u
GROUP BY
    u.ID,
    u.Name;

enter image description here

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...