Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.035 c
14-1091792413
Bless
2004-08-06 15:40
2004.08.29
Чем просматривается формат djvu...


1-1092574828
petvv
2004-08-15 17:00
2004.08.29
О запуске приложений под DOS


3-1091797083
Zelius
2004-08-06 16:58
2004.08.29
Будущее Jet


14-1091918502
GanibalLector
2004-08-08 02:41
2004.08.29
July TAXI


8-1086552781
xman
2004-06-07 00:13
2004.08.29
BITMAP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский