Select id 2x z tej samej tabeli

0

Hej nie mogę znaleźć czy na forum był poruszany temat więc wstawiam.
Taki problem ,że w tabeli loty jest krotka id_wylot i id_przylot obydwie korzystają z tabeli port_lotniczy .
Moje pytanie jak wyciągnąć dane o miejscu wylotu i przylotu ? Nie mogę skręcić warunku...:(
Relacje są pociagniete od port_lotniczy do lot dwa razy

1

Musisz zastosować aliasy

3

Robisz coś w stylu:

select l.* from loty l, port_lotniczy przyloty, port_lotniczy odloty where l.id_wylot=odloty.id and ...

0

Dziękuję bardzo jak wrócę z pracy to sprawdzę.
Z waszą podpowiedzią zrobiło się jaśniej.

0

Hej udało się ale zastosowałem podzapytania w nawiasach mianowicie tak:
Select
lot.id_lot,
(Port_lotniczy.nazwa) as 'wylot',
(Select
Port_lotniczy.nazwa
From Lot,Port_lotniczy
Where Lot.id_port_lotniczy=Port_lotniczy.id_port_lotniczy) as 'przylot'
From Lot,Port_lotniczy
Where Lot.id_port_lotniczy=Port_lotniczy.id_port_lotniczy

Co o tym sądzicie? Można to jakoś zoptymalizować?

2

Podzapytania zupełnie nie są potrzebne, to co pokazałeś nawet nie wiem czy zadziała:

select
*
from
  loty l
  inner join port_lotniczy p on p.id = l.id_przylot
  inner join port_lotniczy w on w.id = l.id_wylot
1

Porty lotnicze tj. Miasta są w jednej tabeli. Nie ma tabeli przylotu i wylotu to jest tylko nazwa krotki w tabeli lot. Twój select zwróci wartości id a ja bym chciał nazwy miast. Ale spróbuję na innerach może będzie lepiej:) ale to wieczorem.

@Adam Jadczak nie do końca, to zapytanie zwróci ci wszystko co potrzebne. Jako, że nie podałeś struktury to powinieneś celować w coś takiego:

SELECT
 l.id_lot
 ,w.nazwa Wylot
 ,p.nazwa Przylot
FROM
  loty l
  INNER JOIN port_lotniczy p ON p.id_port_lotniczy = l.id_przylot
  INNER JOIN port_lotniczy w ON w.id_port_lotniczy = l.id_wylot
0

Ok , w sumie to powinienem zacząć od tego aby przedstawić ta swoją bazę wrzucę wieczorem link aby kto chciał to sobie zobaczył w MS SQL i listę insertów.
@Panczo dzieki za wskazowki sprobuje tak jak piszesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1