powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как сделать два в одном
9 сообщений из 9, страница 1 из 1
как сделать два в одном
    #32000322
albert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди! У меня вопрос тут нарисовался.
Имеются: таб 1 (содержит id и name) - типа справочник для таб 2
таб 2 (содержит id сом1 и сом2)
сом1 и сом2 - поля, содержащие значения индекса таб1
Внимание, вопрос:
какой запрос сможет вывести текстовые значения сом1 и сом2?
aaf@mailru.com
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000327
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если я правильно понял, то так

select t1.id, t21.name, t22.name
from tab1 t1 left join tab2 t21 on ( t1.com1 = t21.id )
left join tab2 t22 on ( t1.com2 = t22.id )
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000329
albert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А откуда t21.name и t22.name?
Я то по любому этот вариант по-пробую, но как это?
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000330
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может проще?
select сом1, сом2 from таб2

Я конечно понимаю что не так, но попробуйте сформулировать, чем это решение не подходит. Уж больно вопрос трудно понять. Может приведёте таблички с данными и тем что должно получиться?

С приветом Сергей
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000334
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
текстовые значения сом1 и сом2 - это и есть t21.name и t22.name
а откуда они - так ведь SQL как бы это сказать - несмотря на всю
простоту - тоже язык - учить его надо.
А вот по поводу сложности понимания вопроса - это точно.
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000336
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже лучше. Осталось только выяснить как же связано сом1 с t21.name, а сом2 с t22.name.

Чем такой пример не понравиться?

create table #t1(id int, name varchar(5))
create table #t2(com1 int, com2 int)

insert #t1 select 1,'One' union select 2, 'Two'
insert #t2 select 1,2

select t21.name, t22.name
from #t1 t21, #t1 t22, #t2 t2
where t21.id=t2.com1 and t22.id=t2.com2
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000349
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.t21 и t22 - алиасы для таблицы с com1 и com2
2.по поводу последнего примера - у тебя таблица #t2 допускает NULL значения для
атрибутов
ну и и если какой - нибудь из com будет иметь значение NULL, то
запрос ничего не возвратит.
Надо так - или нет - всё зависит от семантики БД.
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000356
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?

create table #t1(id int, name varchar(5))
create table #t2(com1 int null, com2 int null)


insert #t1 select 1,'One' union select 2, 'Two'
insert #t2 select 1,2
insert #t2 select 1,null
insert #t2 select null,2

select t21.name, t22.name
from #t1 t21, #t1 t22, #t2 t2
where t21.id=*t2.com1 and t22.id=*t2.com2
...
Рейтинг: 0 / 0
как сделать два в одном
    #32000358
AnatolyS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собственно оператор *= есть эквивалент используемого мной left join а
но join - понятнее. И стандартнее. SQL 92 поддерживает

FROM first_table join_type second_table [ON (join_condition)]
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как сделать два в одном
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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