Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод из двух таблиц с добавлением столбца / 10 сообщений из 10, страница 1 из 1
25.03.2021, 14:26
    #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
25.03.2021, 16:10
    #40056916
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод из двух таблиц с добавлением столбца
Что-то тяжко понять, что нужно... Вы покажите на примере, что ли - исходные данные (по 3-5 записей) да требуемый результат...
...
Рейтинг: 0 / 0
25.03.2021, 17:20
    #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
25.03.2021, 17:34
    #40056950
xolon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод из двух таблиц с добавлением столбца
Tab1


Tab2


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


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

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

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

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

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

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

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


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