SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.05.2020 08:22:26

John_Soda
Участник
Зарегистрирован: 11.05.2020
Сообщений: 3

Исключение лишних значений

Всем добрый день!
Такой вопрос - ещё только начинаю и столкнулся с проблемой - в БД есть две таблицы, условно offline_orders и online_orders.
Запрос сейчас построен примерно так:
Select
id,
order_id,
order_date,
fio_client,
status_order
FROM offline_orders

Необходимо приджойнить данные по order_id из online_orders. Но при этом, если order_id присутствует в обеих таблицах, то должен выводиться order_id  из offline_orders.
Уже думал про DISTINCT order_id, но проблема в том, что в offline_orders запись по одному заказу может повторяться несколько раз, необходимо выводить все записи оттуда.
Надеюсь не слишком всрато объяснил big_smile

Неактивен

 

#2 11.05.2020 20:54:49

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Исключение лишних значений

Приведите пожалуйста тестовый пример данных (буквально несколько строк) в каждой таблицы и покажите тот результат, который хотите получить.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 12.05.2020 07:12:09

John_Soda
Участник
Зарегистрирован: 11.05.2020
Сообщений: 3

Re: Исключение лишних значений

Таблица offline_orders:

id     order_id     order_date        fio_client         status_order   phone   
23    230420      2020-04-03      Петров П.П.     open              88005553535
23    230420      2020-04-03      Петров П.П.     cancel            88005553535
24    240420      2020-04-04      Данилов А.С.   open              89005553535

Таблица online_orders:

order_id    order_date        fio_client          status_order
230420      2020-04-03      Петров П.П.     cancel
0052120    2020-04-03      Михалок Т.С.   cancel


Выглядит примерно так. Т.е. в таблице offline_orders нет части записей из online_orders. Из online_orders мне нужно подтягивать всё, что есть, но, если такая же запись уже есть в offline orders, то нужно, чтобы она не дублировалась из двух таблиц, а шла только из одной.

Неактивен

 

#4 12.05.2020 07:16:12

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Исключение лишних значений

Все же приведите результат, который Вы хотите получить?

>то нужно, чтобы она не дублировалась из двух таблиц, а шла только из одной.
А из которой именно?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 18.05.2020 11:43:04

John_Soda
Участник
Зарегистрирован: 11.05.2020
Сообщений: 3

Re: Исключение лишних значений

Результат нужен такой - данные из обеих таблиц, в случае, если идут данные из таблицы online_orders, то там, где данных нет, просто идёт null.
Если по аналогии с примером из моего предыдущего сообщения, то итоговый результат должен быть таким:
id     order_id     order_date        fio_client         status_order   phone   
23    230420      2020-04-03      Петров П.П.     open              88005553535
23    230420      2020-04-03      Петров П.П.     cancel            88005553535
24    240420      2020-04-04      Данилов А.С.   open              89005553535
Null  0052120    2020-04-03      Михалок Т.С.   cancel            Null

Т.е. запись по заказу  230420 клиента  Петров П.П. в таблице offline_orders повторяется дважды и попадает в выгрузку. Но запись из таблицы online_orders не попадает в общую выгрузку, т.к. order_id  уже есть в таблице offline_orders.
В общем, если подытожить единственное, чем я могу связать друг с другом таблицы это order_id, но в итоге если online_orders.order_id =   offline_orders.order_id то в выгрузку он попадать не должен

Неактивен

 

#6 18.05.2020 12:22:35

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Исключение лишних значений

Попробуйте так?

Select id, order_id, order_date, fio_client,status_order,phone FROM offline_orders
UNION
Select null, order_id, order_date, fio_client,status_order, null FROM online_orders where order_id not in (Select order_id FROM offline_orders);


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson