![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
select from select как сделать правильно? [D7, MSSQL]
Vlad Oshin © (2006-12-15 13:48:00)хочу сделать примерно следующее:
select * from tbl_turist where TU_DGcod=
select * from
tbl_dogovor
where
DG_CnKey = (select CN_key from tbl_Country where CN_NameLat='HURGHADA')
and DG_CtKey = (select Ct_key from CityDictionary where CT_Name=' HURGHADA')
and DG_TRKEY = (select TL_key from tbl_TurList where TL_Name='HUR_100_ 23.12')
and DG_TurDate = '23-12-2006' //тут получаю таблицу из двух путевок, по которым едут по 2 человека. Собственно этих четырех человек и надо получить
почему то не нравится TU_DGcod=
MsGuns (2006-12-16 02:05:00) [1]Дорогой Влад, потратьте пару-тройку дней на SQL,- ей богу, окупится многократно
Vlad Oshin (2006-12-15 18:34:00) [2]следующее дает такое повторение
турист1-путевка1
турист2-путевка1
турист3-путевка2
турист4-путевка2
турист1-путевка1
турист2-путевка1
турист3-путевка2
турист4-путевка2
select * from tbl_turist, tbl_dogovor
where TU_DGcod in (
select
DG_code
from
tbl_dogovor
where
DG_CnKey = (select CN_key from tbl_Country where CN_NameLat='HURGHADA')
and DG_CtKey = (select Ct_key from CityDictionary where CT_Name=' HURGHADA')
and DG_TRKEY = (select TL_key from tbl_TurList where TL_Name='HUR_100_ 23.12')
and DG_TurDate = '23-12-2006')
and
DG_CnKey = (select CN_key from tbl_Country where CN_NameLat='HURGHADA')
and DG_CtKey = (select Ct_key from CityDictionary where CT_Name=' HURGHADA')
and DG_TRKEY = (select TL_key from tbl_TurList where TL_Name='HUR_100_ 23.12')
and DG_TurDate = '23-12-2006'
Vlad Oshin (2006-12-15 18:17:00) [3]подскажите еще такой момент
select * from
tbl_dogovor
where
DG_CnKey = (select CN_key from tbl_Country where CN_NameLat='HURGHADA')
and DG_CtKey = (select Ct_key from CityDictionary where CT_Name=' HURGHADA')
and DG_TRKEY = (select TL_key from tbl_TurList where TL_Name='HUR_100_ 23.12')
and DG_TurDate = '23-12-2006'
получено 2 путевки
select * from tbl_turist
where TU_DGcod in (
select
DG_code
from
tbl_dogovor
where
DG_CnKey = (select CN_key from tbl_Country where CN_NameLat='HURGHADA')
and DG_CtKey = (select Ct_key from CityDictionary where CT_Name=' HURGHADA')
and DG_TRKEY = (select TL_key from tbl_TurList where TL_Name='HUR_100_ 23.12')
and DG_TurDate = '23-12-2006')
получено 4 туриста по этим путевкам(мне так понятнее)
а как вывести
турист1-путевка1
турист2-путевка1
турист3-путевка2
турист4-путевка2
?
MsGuns (2006-12-15 15:20:00) [4]>stone © (15.12.06 14:59) [8]
>может лучше так?
Я бы сказал "приятнее" для сервера, т.к. не заставляет его заниматься выборками ДО каких-бы то ни было сравнений (вложенные селекты) ;)
stone (2006-12-15 14:59:00) [5]вернее так
select tt.* from tbl_turist tt
inner join tbl_dogovor d on tt.TU_DGcod = d.DG_code
inner join Country c on d.DG_CnKey = c.CN_key
inner join CityDictionary cd on d.DG_CtKey = cd.Ct_key
inner join tbl_TurList t on c.DG_TRKEY = t.TL_key
where
c.CN_NameLat='HURGHADA'
and
cd.CT_Name=' HURGHADA'
and
t.TL_Name='HUR_100_ 23.12'
and
d.DG_TurDate = '23-12-2006'
Desdechado (2006-12-15 14:59:00) [6]Vlad Oshin © (15.12.06 13:59) [3]
> IN
Это для случаев, когда возвращается отличное от единицы количество записей (ноль или больше единицы)
stone (2006-12-15 14:52:00) [7]может лучше так?
select d.* from tbl_dogovor d
inner join Country c on d.DG_CnKey = c.CN_key
inner join CityDictionary cd on d.DG_CtKey = cd.Ct_key
inner join tbl_TurList t on c.DG_TRKEY = t.TL_key
where
c.CN_NameLat='HURGHADA'
and
cd.CT_Name=' HURGHADA'
and
t.TL_Name='HUR_100_ 23.12'
and
d.DG_TurDate = '23-12-2006'
Vlad Oshin (2006-12-15 14:17:00) [8]дошло
clickmaker (2006-12-15 14:14:00) [9]
> [4] Vlad Oshin © (15.12.06 14:04)
вот это странно
select * from tbl_turist where TU_DGcod=
select * from
tbl_dogovor
TU_DGcod сравниваешь с *
Vlad Oshin (2006-12-15 14:04:00) [10]
> Desdechado © (15.12.06 13:58) [2]
что странного?
select * from tbl_A where row_1='asdqeqw' - можно.
будет таблица tbl_A1, подтаблица таблицы tbl_A
Теперь делаем из нее select но по другому значению
select * from tbl_A1 where row_2='asdqeqw'
Разве нет?
Vlad Oshin (2006-12-15 13:59:00) [11]
> clickmaker © (15.12.06 13:52) [1]
не... не получается или я не понял :)
IN !
select * from tbl_turist
where TU_DGcod in (
select
DG_code
from
tbl_dogovor
where
DG_CnKey = (select CN_key from tbl_Country where CN_NameLat='HURGHADA')
and DG_CtKey = (select Ct_key from CityDictionary where CT_Name=' HURGHADA')
and DG_TRKEY = (select TL_key from tbl_TurList where TL_Name='HUR_100_ 23.12')
and DG_TurDate = '23-12-2006')
вот что значит покурить :)
Desdechado (2006-12-15 13:58:00) [12]как ты интересно сравниваешь все поля (*) с одним полем?
что должно получиться?
clickmaker (2006-12-15 13:52:00) [13]where TU_DGcod=(select TU_DGcodfrom ... )