#mysql #sql
#mysql #sql
Вопрос:
Я создаю запрос в sql, в котором я собираю информацию о транзакциях продаж, две таблицы, из которых я извлекаю, — это CLIENT_NOTES . У одного клиента может быть любое количество заметок, но не наоборот.
В настоящее время мой запрос выглядит следующим образом:
SELECT client.name, client.email,..., client_notes.summary AS SUMMARY
FROM CLIENT client
LEFT JOIN CLIENT_NOTES client_notes ON client.CLIENT_ID = client_notes.CLIENT_ID
Я также хочу использовать REFERENCE_NOTES.summary для клиентов. Опять же, у одного клиента может быть любое количество справочных заметок, но не наоборот. Но я хочу извлечь данные таким образом, чтобы все записи client_notes.summary отображались для конкретного клиента, а затем записи references_notes.summary отображались для того же клиента до перехода к следующему клиенту, где обе сводки отображаются в одном столбце с именем summary .
Возможно ли это в sql?
Ответ №1:
Вы можете сделать это, используя ОБЪЕДИНЕНИЕ ВСЕХ. По сути, два оператора select столкнулись друг с другом. Первый получает client_notes, а второй получает reference_notes . Некоторые вещи, на которые следует обратить внимание при ОБЪЕДИНЕНИИ, — это то, что количество и порядок столбцов должны быть одинаковыми. Типы данных также должны быть совместимы.
--Get client_notes
SELECT client.name, client.email,..., client_notes.summary AS SUMMARY
FROM CLIENT client
LEFT JOIN CLIENT_NOTES client_notes ON client.CLIENT_ID = client_notes.CLIENT_ID
UNION ALL
--Get reference_notes
SELECT client.name, client.email,..., reference_notes.summary AS SUMMARY
FROM CLIENT client
LEFT JOIN REFERENCE_NOTES reference_notes ON client.CLIENT_ID = reference_notes.CLIENT_ID
ORDER BY client.name