powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение таблиц
13 сообщений из 13, страница 1 из 1
Объединение таблиц
    #39683993
mbs92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, такой вопрос.
Есть Table1, в которую каждый день в 9 утра записываются 4 строчки с данными, ее вид:
id
Name
Kolvo
Price
Date

И есть Table2, в которую каждый день в 9 утра записывается одна строчка с данными, ее вид:
id
Marka
Znachenie
Date

Можно ли обьединить таблицы таким образом, чтобы строчки из Table2, объединялись с первой из четырёх строк Table1?
Примерно так:

id name kolvo price marka znachenie date
1. M1. 100. 250. P1. 6000. 06-08-2018
2. M2. 140. 250. Null. Null. Null
3. M3. 301. 350. Null. Null. Null
4. M4. 400. 900. Null. Null. Null
5. M1. 100. 250. P1. 8000. 07-08-2018
6. M2. 140. 250. Null. Null. Null
7. M3. 301. 350. Null. Null. Null
8. M4. 400. 900. Null. Null. Null
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684001
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbs92Можно ли обьединить таблицы таким образом, чтобы строчки из Table2, объединялись с первой из четырёх строк Table1?Да, кросс-джойн с топ 1 из Table1
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684008
mbs92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Поправьте если я не прав, но ведь при данном запросе строка из второй таблицы, все время будет объединятся тупо с первой строкой из table1?
А мне нужно чтобы новая строчка из table2 объединялась с каждой четвёртой из table1
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684016
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbs92Поправьте если я не прав, но ведь при данном запросе строка из второй таблицы, все время будет объединятся тупо с первой строкой из table1?Да. Вы же хотите, цитирую: "чтобы строчки из Table2, объединялись с первой из четырёх строк Table1"?
mbs92А мне нужно чтобы новая строчка из table2 объединялась с каждой четвёртой из table1Это тоже не очень понятная формулировка :-)
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684017
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbs92А мне нужно чтобы новая строчка из table2 объединялась с каждой четвёртой из table1

Тогда это выглядит вот так:
id name kolvo price marka znachenie date1 M1 100 250 P1 6000 06-08-20182 M2 140 250 P1 6000 06-08-20183 M3 301 350 P1 6000 06-08-20184M4 400 900 P1 6000 06-08-20185 M1 100 250 P1 8000 07-08-20186 M2 140 250 P1 8000 07-08-20187 M3 301 350 P1 8000 07-08-20188 M4 400 900 P1 8000 07-08-2018
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684019
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вру. это полное объединение.

mbs92Можно ли обьединить таблицы таким образом, чтобы строчки из Table2, объединялись с первой из четырёх строк Table1?
mbs92А мне нужно чтобы новая строчка из table2 объединялась с каждой четвёртой из table1

Так с первой или с четвертой?

Впрочем без разницы.
Объединение с условием name="M1" (если с первой) или name="M4" если с четвертой
+ union all с фильтром по первой таблице name<>="M1"(если с первой) или name<>"M4" если с четвертой

И не забыть добавить недостающие поля
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684020
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"В лоб" получилось вот так


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT table1.ID, table1.name ,table1.KOLVO, table1.PRICE,
       table2.marka, table2.znachenie, table1.date
FROM TABLE1, TABLE2
  WHERE TABLE1.NAME='M1' AND TABLE1.DATE=TABLE2.DATE
union all
SELECT table1.ID, table1.name ,table1.KOLVO, table1.PRICE,
       null as marka, null as znachenie, null as date
FROM TABLE1 
  WHERE TABLE1.NAME<>'M1' 
  order by table1.ID



http://sqlfiddle.com/#!18/bd2a7/16

но явно тут что-то не так с постановкой.
ибо теряем дату в остальных строках
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684021
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbs92,

нумеруете обе выборки при помощи ROW_NUBER() OVER() (если в ID гарантированно нет пропусков - можете использовать его, но лучше перестраховаться),
лево-СОЕДИНЯЕТЕ полученный наборы данных (от первой таблице - ко второй) по полю-нумератору и MOD-у + целочисленному делению на 4:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with
  xT1 as 
    (
      select t.*, row_number() over(order by id) as rn from table1 t
    )
, xT2 as 
    (
      select t.*, row_number() over(order by id) as rn from table2 t
    )
select *
 from xT1
 left join xT2
   on xT1.rn/4 + 1 = xT2.rn
  and xT1.rn%4 = 1



тестовые данные и проверка
...
Рейтинг: 0 / 0
Объединение таблиц
    #39684023
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, с left join правильнее.

Код: sql
1.
2.
3.
4.
5.
6.
select table1.ID, table1.name ,table1.KOLVO, table1.PRICE,
       table2.marka, table2.znachenie, table2.date
 from table1 
 left join table2
   on table1.date = table2.date
  and table1.name= 'M1'
...
Рейтинг: 0 / 0
Объединение таблиц
    #39706924
mbs92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Получилось так как вы сказали, но если за одну дату несколько записей, то начинается дублирование строк. Можно как то исправить запрос, чтобы дублирования не было?
...
Рейтинг: 0 / 0
Объединение таблиц
    #39706960
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала надо понять, какие данные за один день данных надо оставить.
...
Рейтинг: 0 / 0
Объединение таблиц
    #39707365
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или просто объясни, что ты хочешь видеть в конечных результатах.

http://sqlfiddle.com/#!18/07240/1
...
Рейтинг: 0 / 0
Объединение таблиц
    #39708967
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубли у тебя в Table1 или в Table2?
Или в обоих?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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