powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Соединение двух таблиц
23 сообщений из 23, страница 1 из 1
Соединение двух таблиц
    #39690970
jango77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пож, как из двух таблиц

Таблица списка характеристик:
Код: sql
1.
2.
3.
4.
WITH [CTE] AS (
          SELECT 'Вес' as 'Признак'
UNION ALL SELECT 'Скорость'
UNION ALL SELECT 'Дальность'



И таблицы фактов
Код: sql
1.
SELECT [Объект], [Признак], [Значение]


Она содержит объекты, по которым проставлена только часть значений признаков.
Нужно получить по каждому объекту список всех признаков с [CTE], включая отсутствующие в таблице фактов .


Сейчас так
Код: plaintext
1.
Объект  Характеристика  Значение
Лампа   Вес                  100

Нужно
Код: plaintext
1.
2.
3.
Объект  Характеристика  Значение
Лампа   Вес                  100
Лампа   Скорость            NULL
Лампа   Дальность           NULL

Подскажите, пожалуйста, каким способом получить нужны результат?
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690973
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left join учили?
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690976
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183,

скорее, cross join + case
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690979
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. согласен.
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690983
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя зачем тут case?

Сначала создаем через cross join
"Объект" "Характеристика"

А потом через left join присоединяем имеющиеся "Значение"
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690988
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Хотя зачем тут case?

Сначала создаем через cross join
"Объект" "Характеристика"

А потом через left join присоединяем имеющиеся "Значение"
детка предпочитает грубые отношения с сервером?
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690989
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я старый извращенец, предпочитающий в учебных задачах наглядность производительности
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690993
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Я старый извращенец, предпочитающий в учебных задачах наглядность производительности
глупость не приравнивайте к наглядности
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39690999
jango77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делал через CROSS JOIN
Но получается

Код: plaintext
1.
2.
3.
Объект  Характеристика  Значение
Лампа   Вес                  100
NULL    Скорость            NULL
NULL    Дальность           NULL

а нужно

Код: plaintext
1.
2.
3.
Объект  Характеристика  Значение
Лампа   Вес                  100
Лампа   Скорость            NULL
Лампа   Дальность           NULL
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691001
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jango77,

не стесняйтесь, покажите, что именно делали?
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691003
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jango77Делал через CROSS JOIN
Но получается

Код: plaintext
1.
2.
3.
Объект  Характеристика  Значение
Лампа   Вес                  100
NULL    Скорость            NULL
NULL    Дальность           NULL

а нужно

Код: plaintext
1.
2.
3.
Объект  Характеристика  Значение
Лампа   Вес                  100
Лампа   Скорость            NULL
Лампа   Дальность           NULL

не то CROSS JOIN-ите
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691012
jango77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

та уже понятно по результату

подскажите пож что с чем нужно
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691015
jango77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посетительjango77,

не стесняйтесь, покажите, что именно делали?

Поверьте, пример значительно наглядней))
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691016
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jango77TaPaK,

та уже понятно по результату

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

та уже понятно по результату



ежели все понятно, то и правьте на здоровье.
а уж пришли к доктору, так будьте добры.
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691021
jango77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKбольшой выбор?

да подскажите пож, горит задача) нужно были час назад сделать. Но вот чтото затупил и не двигаюсь
Какие поля в cross join?
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691023
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
selec t1.Объект,  t1.Характеристика  факт.Значение 
from ( select характеристика.признак, факт.объект from характеристика, факт) as t1
left join факт
on факт.объект=t1.объект and факт.Характеристика=t1.Характеристика
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691028
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183,
стошнило.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
WITH [CTE] AS (
          SELECT 'Вес' as 'Признак'
UNION ALL SELECT 'Скорость'
UNION ALL SELECT 'Дальность'
)
SELECT 
	a.[Объект], 
	b.[Признак], 
	[Значение] = (CASE a.[Признак] = b.[Признак] THEN a.[Значение] ELSE 0 END)
FROM [fact] a 
CROSS JOIN CTE b
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691030
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK982183,
стошнило.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
WITH [CTE] AS (
          SELECT 'Вес' as 'Признак'
UNION ALL SELECT 'Скорость'
UNION ALL SELECT 'Дальность'
)
SELECT 
	a.[Объект], 
	b.[Признак], 
	[Значение] = (CASE a.[Признак] = b.[Признак] THEN a.[Значение] ELSE 0 END)
FROM [fact] a 
CROSS JOIN CTE b



чутка не так

Код: sql
1.
2.
3.
4.
select f.[Объект], c.[Признак], max(case when c.[Признак] = f.[Признак] then f.[Значение] end)
  from Fact f
 cross join cte c
 group by f.[Объект], c.[Признак]
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691032
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может человеку надо про ключи пояснить ?? Бо так и будет всю жизнь лефто кросс джойнить
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691037
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посетитель,

да, сразу написал SUM потом решил, а зачем :)
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691040
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxxможет человеку надо про ключи пояснить ?? Бо так и будет всю жизнь лефто кросс джойнить

какие такие ключи?
отродясь монтировкой пользовался, ни разу не подвела.
...
Рейтинг: 0 / 0
Соединение двух таблиц
    #39691064
jango77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, Посетитель, спасибо за помощь!
:)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Соединение двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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