Mysql, данные распределены по двум таблицам, отдельные строки - PullRequest
1 голос
/ 23 сентября 2011

У меня есть данные, распределенные по двум таблицам MySQL с различной структурой.

В одной таблице есть DVD, а в другой - CD.

Таблица DVD выглядит следующим образом:

PUBLISHER
STOCK
DVD_INFO
EXTRA_DVD_INFO

Таблица компакт-дисков выглядит следующим образом:

PUBLISHER
STOCK
CD_INFO

Как получить все компакт-диски и DVD-диски одного и того же издателя в одном запросе, упорядоченные по STOCK?

  • Одна строка для каждого продукта.
  • Если это компакт-диск, то поля, специфичные для DVD, должны быть пустыми.
  • Если это DVD, то поля, специфичные для компакт-диска, должны быть пустыми.

Я не думаю, что UNION может работать, потому что структуры разные.

Я не уверен, как JOIN может работать в этом случае, чтобы получить отдельные строки для каждого продукта.

1 Ответ

3 голосов
/ 23 сентября 2011

Вы можете использовать NULL для заполнения пустых столбцов, например.

SELECT
    PUBLISHER,
    STOCK,
    DVD_INFO AS INFO,
    EXTRA_DVD_INFO
FROM DVD
WHERE PUBLISHER = ?
    UNION ALL
SELECT
    PUBLISHER,
    STOCK,
    CD_INFO AS INFO,
    NULL
FROM CD
WHERE PUBLISHER = ?
ORDER BY STOCK;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...