Невозможно правильно получить ожидаемый вывод объединения для SQL - PullRequest
0 голосов
/ 06 мая 2018

Неприятность:

Не упорядочен должным образом и не выложил код / ​​или не использовал соглашения, как ожидалось.

Вопрос:

Здесь необходимо использовать оператор Union, и для этого найдите vendor_id, указанные в третьей строке используемого кода, и их количество меньше, чем указано в последней строке кода. Код нужно будет отсортировать.

Используемый код:

SELECT job_id, po_id, 'Vendor ' || vendor_id as 'Reason'
FROM pos
WHERE vendor_id IS 'SOS'
UNION
SELECT job_id, po_id, 'Quantity < ' || quantity as 'Reason'
FROM pos
WHERE quantity < 10;

Значит получить:

job_id      po_id       Reason
----------  ----------  ------------
002         AAA         Quantiy < 10
004         CCC         Quantiy < 10
004         CCC         Vendor SOS
005         EEE         Vendor SOS
006         GGG         Quantiy < 10

Получено (от CodeRunner):

Runtime error
Program does not use the expected ORDER BY clause or is badly laid out.

См. Схему базы данных для более подробной информации (Первичные ключи выделены жирным шрифтом).

Неизвестная СУБД используется. Ведет себя как PostgreSQL, а не mysql.

1 Ответ

0 голосов
/ 06 мая 2018

Чтобы отсортировать по job_id, затем по po_id, просто добавьте предложение ORDER BY в конце запроса. По умолчанию порядок сортировки ASC (по возрастанию), вы можете добавить DESC, если хотите сортировать по убыванию.

SELECT
    job_id, 
    po_id, 
    'Vendor ' || vendor_id as 'Reason'
FROM pos
WHERE vendor_id = 'SOS'

UNION

SELECT 
    job_id,
    po_id, 
    'Quantity < ' || quantity as 'Reason'
FROM pos
WHERE quantity < 10

ORDER BY 
    job_id,
    po_id;
...