Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: 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 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
1-1168784135
The X
2007-01-14 17:15
2007.03.11
Корректная работа с CHM-хелпами в Delphi5.


15-1171275632
Layner
2007-02-12 13:20
2007.03.11
Кто знает, какие на mail.ru ограничения по отправке писем в день?


15-1171255558
Slider007
2007-02-12 07:45
2007.03.11
С днем рождения ! 12 февраля


2-1171836522
barakuda
2007-02-19 01:08
2007.03.11
Написал CGI приложение (windows + Apach)


2-1172046176
Клара
2007-02-21 11:22
2007.03.11
Экспорт в Word