Вниз
Скачать: CL | DM;

select from select как сделать правильно?   Найти похожие ветки 

 
Vlad Oshin ©   (2006-12-15 13:48) [0]

хочу сделать примерно следующее:
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=


 
clickmaker ©   (2006-12-15 13:52) [1]

where TU_DGcod=(select TU_DGcod from ... )


 
Desdechado ©   (2006-12-15 13:58) [2]

как ты интересно сравниваешь все поля (*) с одним полем?
что должно получиться?


 
Vlad Oshin ©   (2006-12-15 13:59) [3]


> 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")

вот что значит покурить :)


 
Vlad Oshin ©   (2006-12-15 14:04) [4]


> 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"
Разве нет?


 
clickmaker ©   (2006-12-15 14:14) [5]


> [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:17) [6]

дошло


 
stone ©   (2006-12-15 14:52) [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"


 
stone ©   (2006-12-15 14:59) [8]

вернее так
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) [9]

Vlad Oshin ©   (15.12.06 13:59) [3]
> IN
Это для случаев, когда возвращается отличное от единицы количество записей (ноль или больше единицы)


 
MsGuns ©   (2006-12-15 15:20) [10]

>stone ©   (15.12.06 14:59) [8]
>может лучше так?

Я бы сказал "приятнее" для сервера, т.к. не заставляет его заниматься выборками ДО каких-бы то ни было сравнений (вложенные селекты) ;)


 
Vlad Oshin ©   (2006-12-15 18:17) [11]

подскажите еще такой момент

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
?


 
Vlad Oshin ©   (2006-12-15 18:34) [12]

следующее дает такое повторение
турист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"


 
MsGuns ©   (2006-12-16 02:05) [13]

Дорогой Влад, потратьте пару-тройку дней на SQL,- ей богу, окупится многократно



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
2-1171623868
vegarulez
2007-02-16 14:04
2007.03.11
Подскажите как серийник с винта считать...


2-1172082287
NightRain
2007-02-21 21:24
2007.03.11
Выключение компьютера


15-1171562699
default
2007-02-15 21:04
2007.03.11
Кто писал программы наподобие ERwin и Rational Rose


15-1171573566
Cyrax
2007-02-16 00:06
2007.03.11
GUI-библиотеки для C++ без всяких FW и JVM, нормальные, удобные..


4-1150801944
Cerberus
2006-06-20 15:12
2007.03.11
Глобальный хук на клавиатуру без dll.




   Наверх