webForumDet fria alternativet

Behöver lite sql-hjälp!

9 svar · 584 visningar · startad av krutov

krutovMedlem sedan feb. 200814 inlägg
#1

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
#2
$sql = "select FLYGPLANS_ID, ANKOMSTGSTID, AVGÅNGSTID 
from FLYGRESA 
where FRANFLYGPLATS = 'arlanda' and TILLFLYGPLATS = 'chicago'";
krutovMedlem sedan feb. 200814 inlägg
#3

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
#4

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
#5

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
#6

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
#7

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
#8

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
#9

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
#10

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

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)