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

SQL   Найти похожие ветки 

← →
Trofimov   (2004-08-05 11:21) [0]

Привет! Есть таблица "Рейсы"(кое какие поля: город отправления, город прибытия). Эти поля связаны с таблицей городов. Как
сделать запрос чтобы вывелась таблица рейсов и в ней из таблицы Города попали названия соответствующие поля таблицы Рейсы?
Спасиб


← →
Johnmen ©   (2004-08-05 11:23) [1]

см. [INNER] JOIN | {LEFT | RIGHT | FULL } [OUTER]} JOIN


← →
Trofimov   (2004-08-05 11:26) [2]

Johnmen ©   , такая вещь думаешь поможет? Сейчас посмотрю но думаю вряд ли........


← →
Ega23 ©   (2004-08-05 11:26) [3]

Select TownIn=(Select TownName from Towns where TownID=TownIDIn),
TownOut=(Select TownName from Towns where TownID=TownIDOut)
from Trips


← →
Johnmen ©   (2004-08-05 11:32) [4]

>Trofimov   (05.08.04 11:26) [2]

Интересно, а для чего по-твоему "такая вещь" ?


← →
Trofimov   (2004-08-05 11:33) [5]

Ega23 ©   , вроде это то что нады. Запрос вышел как надо. Спасибо, я например не знал что так хитро можно сделать в запросе


← →
Trofimov   (2004-08-05 11:34) [6]

Johnmen ©   ну в этой ситуации это точно не прокатит


← →
Sandman25 ©   (2004-08-05 11:35) [7]

[5] Trofimov   (05.08.04 11:33)

Можно и без этих хитростей, обычным inner join.


← →
Плохиш ©   (2004-08-05 11:35) [8]

>Trofimov (05.08.04 11:34) [6]

Как много ты ещё чего не знаешь!


← →
Danilka ©   (2004-08-05 11:36) [9]

[6] Trofimov   (05.08.04 11:34)
да ну? ставлю ящик пива против твоей одной бутылки, по-рукам? :))


← →
Trofimov   (2004-08-05 11:43) [10]

Если все такие "умные" то покажите как можно с помощью inner join...


← →
Danilka ©   (2004-08-05 11:46) [11]

[10] Trofimov   (05.08.04 11:43)
Угу. Ты-бы еще попросил показать, как ходить ногами. Джойны именно для и придуманы, что ты просишь, а примеры подробные и в хелпе есть, но начать лучше с книжек умных, однако. :))


← →
Плохиш ©   (2004-08-05 11:49) [12]


> Trofimov   (05.08.04 11:43) [10]
> Если все такие "умные" то покажите как можно с помощью inner
> join...

Select t1.TownName as TownIn, t2.TownName as TownOut
from Trips tr
inner join towns t1 on t1.TownID=tr.TownIDIn
inner join Towns t2 on t2.TownID=tr.TownIDOut

PS. Ешё и проверку произведёт на правильность данных в Trips
PPS. Отправляй яшик пива Danilk-е :-)


← →
Rule ©   (2004-08-05 11:49) [13]

Trofimov   (05.08.04 11:34) [6]
Советую более внимательно почитать про Join вообщето  как раз для ваших ситуаций оно и придумано, и кстати взамозаменямо с Where шас продемонстрирую:

select  a.reisid, b.name, b.name from raises a, towns b where
a.townin=b.id and a.townout=b.id

я надеюсь понятно где какие поля
reisid - номер рейса в таблице рейсов
name - название города в таблице городов
id - первичный  ключ города
townin - город прибытия
townout - город отбытия


← →
Trofimov   (2004-08-05 11:50) [14]

Danilka © я джоинами много юзал но тут такая дребедень что надо связать два поля причем эти поля лежат в одной родительской таблице! Ega23 все верно указал и вообще я запрос уже сделал!
Заканчиваем спор и без примера ты меня все равно не переубедишь а самому мне влом уже переделывать запрос!!!


← →
Плохиш ©   (2004-08-05 11:50) [15]


> Danilka ©   (05.08.04 11:46) [11]

Не забуть рассазать, прислал-ли он тебе ящик пива ;-)


← →
Плохиш ©   (2004-08-05 11:52) [16]


> Trofimov   (05.08.04 11:50) [14]
> Danilka © я джоинами много юзал

Ой, а мы так верим, так верим


← →
Danilka ©   (2004-08-05 11:52) [17]

[12] Плохиш ©   (05.08.04 11:49)
> PPS. Отправляй яшик пива Danilk-е :-)

Дык, я свой ящик ставил, против его всего одной бутылочки, но что-то отмолчался. :))


← →
Плохиш ©   (2004-08-05 11:55) [18]


> Danilka ©   (05.08.04 11:52) [17]
> Дык, я свой ящик ставил, против его всего одной бутылочки,
> но что-то отмолчался. :))

О, блин, ну пусть хоть бутылку шлёт :-)


← →
Trofimov   (2004-08-05 11:55) [19]

Если я отправлю ящик пива то мне должны отправить этот запрос а
пока я составил запрос вида
select
 claim.inc,
 "order".claim,
 freight.lname,
 source = (Select town.lname from town where town.inc = freight.source),
 target = (Select town.lname from town where town.inc = freight.target)
from
 claim,
 "order",
 freight

where
 claim.inc="order".claim
 and
 "order".freight=freight.inc


← →
Плохиш ©   (2004-08-05 11:55) [20]

PS. Не по-юзаную ;-)


← →
Плохиш ©   (2004-08-05 11:58) [21]


> Trofimov   (05.08.04 11:55) [19]
> Если я отправлю ящик пива то мне должны отправить этот запрос

Ээээ, товагищ, вы вообще ответы-то читаете?


← →
Danilka ©   (2004-08-05 11:58) [22]

[20] Плохиш ©   (05.08.04 11:55)
гы-гы-гы :))

[19] Trofimov   (05.08.04 11:55)
не тем местом смотришь, смотри сюда: [12] Плохиш ©   (05.08.04 11:49)


← →
Trofimov   (2004-08-05 12:03) [23]

Ну мне накласть кто кому чего должен !!!
Запгос тгебует нагод! Хлеба и зрелищ!


← →
TDK   (2004-08-05 12:08) [24]

>Ну мне накласть кто кому чего должен !!!
С таким отношением, в следующий раз, всем тоже будет "накласть" какая там у тебя проблема!


← →
Johnmen ©   (2004-08-05 12:10) [25]

Прикольно...
А я могу написать ещё более громоздко и тормознуто...:)
>Trofimov
Может фишка именно в этом ? Или в юзанье нестандартных возможностей ?


← →
Trofimov   (2004-08-05 12:11) [26]

TDK прочитай весь форум! Когда тебе нужен совет а тут кто то про пивко рассуждает спокойненько
то начинаешь беситься!
ВСЕ. Всем спасибо дискуссия окончена!


← →
Rule ©   (2004-08-05 12:11) [27]

Trofimov   (05.08.04 12:03) [23]
Действительно хоть это и можно отнести к разряду шутки но прям класть на друггих не надо ... могут в игнор отправить и тогда все вопросы будут в воздух


← →
Trofimov   (2004-08-05 12:14) [28]

PS. "Накласть на всех" -  это просто образное выражение, и я не собираюсь ни на кого класть!


← →
Trofimov   (2004-08-05 12:39) [29]

я все ж - таки решил написать альтернативный запрос к базе.
Советую и вам попробовать а потом сравним оригинальность!


← →
Sandman25 ©   (2004-08-05 12:46) [30]

оригинальность не самый лучший критерий оптимальности запросов


← →
Trofimov   (2004-08-05 12:54) [31]

Sandman25 ©   ну а оптимальность нам покажет SQL Query Analyser в Execution Plan ...


← →
Trofimov   (2004-08-05 12:58) [32]

Ну вот так получилось пока
SELECT
freight.source,
freight.target,    
town.lname
FROM freight inner JOIN town on freight.source=town.inc
но как сюда привязать еще одно свзаное поле таблицы "Рейсы"?


← →
Danilka ©   (2004-08-05 13:55) [33]

2 Trofimov

Мда.
Ты вот этот пост: [12] Плохиш ©   (05.08.04 11:49)
смотрел или нет? Или посмотрел, но ничего не понял? Там все расписано.


← →
Trofimov   (2004-08-05 13:56) [34]

Ну что все заснули что ли?
Пока я пришел к выводу:
через внутреннее соединение (join и т.п.) можно соединить две таблицы по полям ( одно поле главной с ОДНИМ полем подчиненной)


← →
Trofimov   (2004-08-05 14:06) [35]

Danilka © ОДНА таблица TOWN а не 2 так что пост 12 - негодиться


← →
Sandman25 ©   (2004-08-05 14:08) [36]

[35] Trofimov   (05.08.04 14:06)

а как Вы думаете, в посте [3] одна таблица town или две?


← →
Danilka ©   (2004-08-05 14:08) [37]

[35] Trofimov   (05.08.04 14:06)
Тихий ужас. :))
Ладно, специально для тебя выделю там две таблицы городов:

Select t1.TownName as TownIn, t2.TownName as TownOut
from Trips tr
inner join towns t1 on t1.TownID=tr.TownIDIn
inner join Towns t2 on t2.TownID=tr.TownIDOut

скажи, дорогой друг, сколько слов выделено жирными буковками?


← →
Trofimov   (2004-08-05 14:14) [38]

Danilka ©   не я теперь врубился - таблица одна но у нее два имени и поэтому это все-таки надо испытать... через 5 мин скажу как это прокатит


← →
Trofimov   (2004-08-05 14:30) [39]

(1 вариант)
select
 claim.inc,
 "order".claim,
 freight.lname,
 source = (Select town.lname from town where town.inc = freight.source),
 target = (Select town.lname from town where town.inc = freight.target)
from
 claim,
 "order",
 freight

where
 claim.inc="order".claim
 and
 "order".freight=freight.inc

(2 вариант)
select
 claim.inc,
 "order".claim,
 freight.lname,
 ta.lname,
 tb.lname
from
 claim,
 "order",  
 freight
inner join
  town ta on ta.inc=freight.source
inner join
  town tb on tb.inc=freight.target
where
 claim.inc="order".claim
 and
 "order".freight=freight.inc


← →
Trofimov   (2004-08-05 14:31) [40]

Теперь такой вопрос: что лучше и почему? (вопрос ко всем)
Про execution plan MS SQL мне рассказывать не нужно



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

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



Память: 0.54 MB
Время: 0.021 c
3-1091690480
Trofimov
2004-08-05 11:21
2004.08.29
SQL


14-1091834611
Piter
2004-08-07 03:23
2004.08.29
Сайт Анатолия все популярнее :)


14-1091865428
Alex*
2004-08-07 11:57
2004.08.29
А давно ли этот сайт появился http://delphusory.nm.ru/


14-1092223767
Vlad Oshin
2004-08-11 15:29
2004.08.29
Куда бы деть ~200 пустых полторашек, из-под пива/лимонада


6-1086981860
Dimaxx
2004-06-11 23:24
2004.08.29
Скачивание файлов с использованием wininet




   Наверх