Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор из двух таблиц / 9 сообщений из 9, страница 1 из 1
14.11.2017, 02:33
    #39552582
Alex-777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Всем привет,

Такой вопрос, упростим задачу до двух таблиц

PLAN

id INT,
date DATE,
SUMMA DECIMAL

FAKT

id INT,
date DATE,
SUMMA DECIMAL

Не все даты есть в таблицах, может быть или план или факт или оба или нечего.
Нужно сделать запрос, результат которого будет типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-----------+--------+--------
date       ! plan   ! fakt
-----------+--------+--------
05.11.2017 ! 100.00 ! 150.00  
-----------+--------+--------
06.11.2017 !        ! 150.00  
-----------+--------+--------
08.11.2017 ! 125.00 ! 
-----------+--------+--------
09.11.2017 !        ! 250.00  
-----------+--------+--------
13.11.2017 ! 100.00 ! 150.00 

Спасибо
...
Рейтинг: 0 / 0
14.11.2017, 04:43
    #39552592
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Alex-777Всем привет,

Такой вопрос, упростим задачу до двух таблиц

PLAN

id INT,
date DATE,
SUMMA DECIMAL

FAKT

id INT,
date DATE,
SUMMA DECIMAL

Не все даты есть в таблицах, может быть или план или факт или оба или нечего.
Нужно сделать запрос, результат которого будет типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-----------+--------+--------
date       ! plan   ! fakt
-----------+--------+--------
05.11.2017 ! 100.00 ! 150.00  
-----------+--------+--------
06.11.2017 !        ! 150.00  
-----------+--------+--------
08.11.2017 ! 125.00 ! 
-----------+--------+--------
09.11.2017 !        ! 250.00  
-----------+--------+--------
13.11.2017 ! 100.00 ! 150.00 
Спасибо

select
z.date
,p.summa
,f.summa
from
(
select date
from PLAN
union
select date
from FACT
) z
left join PLAN p on p.date = z.date
left join FAKT f on f.date = z.date

...предпологается что ДАТЕ -- уникальное поле в обоих таблицах,
если нет -- надо дорабатывать условия....
...
Рейтинг: 0 / 0
14.11.2017, 05:04
    #39552594
Alex-777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
javajdbcAlex-777Всем привет,

Такой вопрос, упростим задачу до двух таблиц

PLAN

id INT,
date DATE,
SUMMA DECIMAL

FAKT

id INT,
date DATE,
SUMMA DECIMAL

Не все даты есть в таблицах, может быть или план или факт или оба или нечего.
Нужно сделать запрос, результат которого будет типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-----------+--------+--------
date       ! plan   ! fakt
-----------+--------+--------
05.11.2017 ! 100.00 ! 150.00  
-----------+--------+--------
06.11.2017 !        ! 150.00  
-----------+--------+--------
08.11.2017 ! 125.00 ! 
-----------+--------+--------
09.11.2017 !        ! 250.00  
-----------+--------+--------
13.11.2017 ! 100.00 ! 150.00 
Спасибо

select
z.date
,p.summa
,f.summa
from
(
select date
from PLAN
union
select date
from FACT
) z
left join PLAN p on p.date = z.date
left join FAKT f on f.date = z.date

...предпологается что ДАТЕ -- уникальное поле в обоих таблицах,
если нет -- надо дорабатывать условия....

Поле даты не уникальное, но уникальна комбинация date, id_client, time. Дата и время отдельно так как в расписании нет даты, а есть день недели и время. Ну и в факте день недели меняем на конкретную дату и время.
...
Рейтинг: 0 / 0
14.11.2017, 06:00
    #39552597
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Alex-777javajdbcпропущено...


select
z.date
,p.summa
,f.summa
from
(
select date
from PLAN
union
select date
from FACT
) z
left join PLAN p on p.date = z.date
left join FAKT f on f.date = z.date

...предпологается что ДАТЕ -- уникальное поле в обоих таблицах,
если нет -- надо дорабатывать условия....

Поле даты не уникальное, но уникальна комбинация date, id_client, time. Дата и время отдельно так как в расписании нет даты, а есть день недели и время. Ну и в факте день недели меняем на конкретную дату и время.

...какой вопрос такой и ответ...

...ставьте задачу точнее, проводите конкретные структуры ,
конкретное отношение структур, бизнес правила
(может ли клиент в один день два раза поиметь факт?
можно ли поиметь факт НЕ в день расписания, и все такая фигня)
пример данных и ожидаемый результат...
...
Рейтинг: 0 / 0
14.11.2017, 08:09
    #39552617
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT sq.date, t1.plan, t2.fakt
FROM ( SELECT date FROM plan
       UNION
       SELECT date FROM fakt
     ) AS sq
LEFT JOIN plan AS t1 ON sq.date = t1.date
LEFT JOIN fakt AS t2 ON sq.date = t2.date
...
Рейтинг: 0 / 0
14.11.2017, 08:11
    #39552619
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Сорри...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT sq.date, SUM(t1.plan) AS plan, SUM(t2.fakt) AS fakt
FROM ( SELECT date FROM plan
       UNION
       SELECT date FROM fakt
     ) AS sq
LEFT JOIN plan AS t1 ON sq.date = t1.date
LEFT JOIN fakt AS t2 ON sq.date = t2.date
GROUP BY sq.date
...
Рейтинг: 0 / 0
15.11.2017, 08:17
    #39553214
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Alex-777,

full outer join
...
Рейтинг: 0 / 0
15.11.2017, 09:09
    #39553239
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
MasterZiv , FULL JOIN? в MySQL?
...
Рейтинг: 0 / 0
15.11.2017, 13:07
    #39553418
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из двух таблиц
Akina MasterZiv , FULL JOIN? в MySQL?

Если нет, имитировать через UNION ALL...

p.s. я что все мыскули должен наизусть знать?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор из двух таблиц / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]