krutovMedlem sedan feb. 200814 inlägg Hej! Nu har jag kört fast igen. Men det börjar lossna ganska rejält!
FLYGRESA(FLYGPLANS_ID,FRANFLYGPLATS,TILLFLYGPLATS,AVGÅNGSTID,ANKOMSTGSTID)
data:
plan_1,arlanda,chicago,16:15,20:00
plan_2,arlanda,köpenhamn,15:00,16:00
plan_2,köpenhamn,chicago,16:20,19:00
plan_3,bukarest,kairo,17:20,21:10
Jag vill lista vilka plan som går från arlanda till chicago.
Det enda jag vill ha är planID och ankomst och avgångstid.
svaret ska se ut så här:
plan_1|16:15|20:00
plan_2|15:00|19:00
Någon som har nåt tips på en sql? Som är enkel att förstå för en nybörjare... :)
Som vanligt så är jag grymt tacksam om jag får hjälp! :)
K@llenMedlem sedan mars 20032 667 inlägg $sql = "select FLYGPLANS_ID, ANKOMSTGSTID, AVGÅNGSTID
from FLYGRESA
where FRANFLYGPLATS = 'arlanda' and TILLFLYGPLATS = 'chicago'";
krutovMedlem sedan feb. 200814 inlägg tack för ditt snabba svar! :)
Men om du ser plan_2. Det gör en mellanlandning i köpenhamn... ;) Och fortsätter till chicago.
Se det önskade resultatet.
K@llenMedlem sedan mars 20032 667 inlägg Då är din tabellstruktur knas. Med den strukturen kan du ju inte hålla koll på både frånflygplats, mellanlandningsplats och tillfygplats. Lite normalisering hade varit på sin plats. ;)
Eller finns det fler "hemliga" tabeller?
LaspMedlem sedan juli 200012 980 inlägg Normalisering och sortering av nycklar och tider var något jag tänkte på redan vid förra frågan.
Det blir tuffare och tuffare! För det är väl en skoluppgift du håller på med krutov?
krutovMedlem sedan feb. 200814 inlägg ja, den är mer än knas! Nu är det så att det är inte min tabellstruktur.
Det är en hemuppgift.
Tro mig, när LarsG kommer så har han en lösning! :D
krutovMedlem sedan feb. 200814 inlägg
Lasp skrev:
Normalisering och sortering av nycklar och tider var något jag tänkte på redan vid förra frågan.
Det blir tuffare och tuffare! För det är väl en skoluppgift du håller på med krutov?
japp, det här var den näst sista sql:en på SQL-delen av min studier.
Sista frågan fixade jag efter ett par timmar.. :birp
men den här går jag bet på, men när man får se lösningen så får man ju en sån där härliga "aha-upplevelse".
Det gäller att ta till sig hjälpen man får här! Den har varit grym hittills.
krutovMedlem sedan feb. 200814 inlägg nu har jag lyckats skriva en sql som "kanske" fungerar. Jag får iaf resultatet som jag vill ha.
snälla, säg att jag tänkt rätt?
som vanligt.... jättetacksam för hjälp! ;)
select FLYGPLANS_ID,AVGÅNGSTID,
(select ANKOMSTGSTID from FLYGRESA
where x.FLYGPLANS_ID=FLYGPLANS_ID
and TILLFLYGPLATS='chicago') as ANKOMSTGSTID
from FLYGRESA X
where FRANFLYGPLATS='arlanda'
and FLYGPLANS_ID in
(select FLYGPLANS_ID from FLYGRESA
where TILLFLYGPLATS='chicago')
union
select FLYGPLANS_ID,AVGÅNGSTID,ANKOMSTGSTID
from FLYGRESA where
TILLFLYGPLATS='chicago' and FRANFLYGPLATS ='arlanda'
LarsGMedlem sedan dec. 200012 464 inlägg I din ursprungliga fråga så behövs det inte union
select FLYGPLANS_ID,
AVGÅNGSTID,
(select ANKOMSTGSTID
from FLYGRESA
where x.FLYGPLANS_ID=FLYGPLANS_ID
and TILLFLYGPLATS='chicago') as ANKOMSTGSTID
from FLYGRESA X
where FRANFLYGPLATS='arlanda'
and FLYGPLANS_ID in
(select FLYGPLANS_ID
from FLYGRESA
where TILLFLYGPLATS='chicago')
ger samma resultat. Du kommer att få med plan1 i båda delfrågorna men då du har union så tas duplikat bort. Om du byter mot union all så ser du det.
Alternativt så kan du skriva frågan som
select fr1.flygplans_id,
fr1.avgångstid,
fr2.ankomstgstid
from flygresa fr1
join flygresa fr2 on fr1.flygplans_id = fr2.flygplans_id
where fr1.franflygplats = 'Arlanda'
and fr2.tillflygplats = 'Chicago'
vilket jag tycker är mer lättläst.
Redigering, bytte till de rätta korrelationsnamnen.
krutovMedlem sedan feb. 200814 inlägg Du har så rätt så!
Men det kändes skönt att vara på rätt väg iaf.
Tack så hemskt mycket! :D