powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод из двух таблиц с добавлением столбца
10 сообщений из 10, страница 1 из 1
Вывод из двух таблиц с добавлением столбца
    #40056878
xolon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Проблема такая. Имеется две таблицы Tab1 и Tab2 (имена такие, чтобы удобнее было понимать как с ними работать). В них есть столбцы ls, pu и other (имена одинаковые во обеих таблицах). Раньше мне требовалось просто их объединить. Я делал так:
Код: sql
1.
SELECT * FROM Tab1 LEFT JOIN Tab2 ON Tab1.ls = Tab2.ls


И все было замечательно, пока не понадобилось посчитать количество уникальных значений столбца ls для первой таблицы (или для второй, без разницы). То есть сколько в ls там двоек, сколько троек и т.д. То есть если там в таблице запись содержит ls = 1 то в новую колонку надо записать количество единичек (допустим всего 5) и так далее.
Отдельный запрос как сделать я нашел:
Код: sql
1.
SELECT ls, COUNT (ls) as coun FROM Tab1 GROUP BY Tab1.ls


Это работает.
Но как мне объединить эти два запроса в один? Так как знаний маловато, я конечно попробовал UNION...

Версия
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) Sep 24 2019 13:48:23 Copyright (C) 2019 Microsoft Corporation Express Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19042: )
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056916
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то тяжко понять, что нужно... Вы покажите на примере, что ли - исходные данные (по 3-5 записей) да требуемый результат...
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056942
xolon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотрите, например Tab1

https://ibb.co/LCmHh8Y


ls pu other
1 22 55
1 12 23
2 1 46656
3 66 4545
6 7 12

Tab2

https://ibb.co/dkDmpKF
ls pu other
3 2 55
6 4 23
2 6 266
3 66 15
6 7 12

Запрос должен достраивать после объединения столбец, ну пусть будет coun, название его сейчас не важно.
Должно получиться что-то типа такого:

ls pu other ls pu other coun
1 22 55 NULL NULL NULL 2
1 12 23 NULL NULL NULL 2
2 1 46656 2 6 266 1
3 66 4545 3 2 55 1
3 66 4545 3 66 15 1
6 7 12 6 4 23 1
6 7 12 6 7 12 1


Пока что я могу только объединить таблицы, но не получается посчитать там же, в одном запросе, еще и дополнительную колонку coun.

https://ibb.co/dphSdCW

То есть в coun он заносит сколько таких значений встречается в первой таблице. В первой таблице в колонке ls два значения 1. Остальных по одному.

Почему то не показывает рисунки :( .
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056950
xolon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tab1


Tab2


Объединение таблиц к которым нужно достроить один столбец


Извините, не понял сначала как прикладывать картинки
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056956
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xolon,

так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with tab1(ls,pu,other) as  (
select 1, 22, 55
union all select 1, 12, 23
union all select 2, 1, 46656
union all select 3, 66, 4545
union all select 6, 7, 12
),
tab2(ls,pu,other) as (
select 3, 2, 55
union all select 6, 4, 23
union all select 2, 6, 266
union all select 3, 66, 15
union all select 6, 7, 12)

select 
	t1.ls,t1.pu,t1.other, 
	t2.ls,t2.pu,t2.other,
	(select count(1) from tab1 tt where tt.ls=t1.ls) [tak?]
from tab1 t1 left join tab2 t2 on t1.ls=t2.ls

...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056958
xolon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
Типа такого да, но там же не имена столбцов, а конкретные значения. А если их там будут тысячи? Да быстрее их вручную в Эксель перегнать тогда и там искать. А результат да, такой какой нужен.

Извините, я плохо знаю SQL. Что делает первая часть? Вторая получается и есть то, что мне нужно?
Вы могли бы общими словами объяснить, что там происходит в запросе? Я хочу понять, а не только получить готовый результат...
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056968
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xolon
Что делает первая часть? Вторая получается и есть то, что мне нужно?

первая часть изображает "на лету" две таблицы, которые есть у вас в базе или то, что вы привели в качестве примера
вторая часть (select ...) соединяет эти таблицы и считает значения

первая часть называется CommonTableExpression, забудьте про нее
она приведена для того, чтобы нарисовать исходные данные и проверить результат запроса
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056979
xolon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad, спасибо!

Получается мне нужно было использовать условие отбора where вместо group by ?
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056982
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xolon
komrad, спасибо!

Получается мне нужно было использовать условие отбора where вместо group by ?

получается что:
1) вам нужно было использовать вложенный подзапрос
2) передавать ему tab1.ls для подсчета необходимых данных
...
Рейтинг: 0 / 0
Вывод из двух таблиц с добавлением столбца
    #40056985
xolon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
Спасибо! Буду разбираться дальше!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод из двух таблиц с добавлением столбца
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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