Avatar billede chrishunter Nybegynder
20. april 2010 - 08:17 Der er 6 kommentarer og
1 løsning

forespørgsel med forskellen af felter som resultat

Hvordan laver jeg en forespørgsel, hvor værdien af vaerdi dér, hvor tidsp="slut", trækkes fra værdien af vaerdi dér, hvor tidsp="start", når de resterende felter i tabellen har samme værdi?

Jeg har med andre ord en tabel, hvor felternes værdier er unikke for par af poster, undtaget for feltet tidsp, der har værdierne hhv. "start" og "slut" for hvert af disse par, og feltet vaerdi. Og jeg skal finde populært skrevet

  "slut"vaerdi - "start"vaerdi

for hvert af disse par.


Venlig hilsen

Christian
20. april 2010 - 09:08 #1
Det var lidt kryptisk for mig.  Kan du vise os hvordan tabellen ser ud, navn og datatype for de forskellige felter?  Med bedre forstaaelse lader det sig uden tvivl loese.
Avatar billede chrishunter Nybegynder
20. april 2010 - 09:22 #2
Noget i retning  af dette:

andrefelter tidsp vaerdi
    1          start      5
    1          slut      3
    2          start      7
    2          slut      2
    3          start      3
    3          slut      6

skal resultere i

andrefelter resultat
    1            -2
    2            -5
    3            3

Og ja, det var noget kryptisk, det første, jeg havde skrevet. Håber det er mere tydeligt nu.
20. april 2010 - 11:33 #3
Jeg bad dig beskrive den tabel du siger du har oprettet og som du vil forespoerge med MySQL, hvilke felter der er i tabellen og felternes navne og datatyper.  Det svarede du ikke paa.  Forstod du ikke spoergsmaalet eller har du ikke endnu en mysql tabel? Grunden til mit spoergsmaal er at det er den maade du snakker om felter der, i relationel database henseende, er kryptisk (hvorimod dit behov ikke er saa kryptisk.)

Hvis du har oprettet en mysql tabel saa fortel mig navnet paa tabellen og navnet og datatypen paa hver felt/kolonne i tabellen.  Saa er jeg temmelig sikker paa at jeg kan foreslaa en mysql forespoergsel.

Hvis du ikke har oprettet en mysql tabel saa maa dit foerste problem vaere at oprette saadan en tabel.  Hvis det er afstande du vil maale, for eksemple smukke vejstraekninger du ser som du koerer ud ad landevejen, saa kunne du oprette saadan en tabel:  "CREATE TABLE afstande(afstandID INT, startkm INT, slutkm INT") Du fylder vaerdier i tabellen med "INSERT INTO afstande VALUES(1, 22, 28)" hvis den foerste vejstraekning begyndte ved 22 km stenen og sluttede ved 28 km stenen og du faar forskellen ud ved "SELECT afstandID, slutkm-startkm AS afstand FROM afstande" hvilket vil give dig resultatet:

afstandID afstand
1                4

Hvis det er andre forskelle du vil maale, for eksempel tidsrum, kan det ogsaa klares ved at aendre datatyper for felterne og tilpasse forespoergslen.
Avatar billede arne_v Ekspert
20. april 2010 - 15:12 #4
proev:

SELECT t1.andrefelter,t2.vaerdi-t1.vaerdi AS resultat
FROM dintabel t1,dintabel t2
WHERE t1.andrefelter=t2.andrefelter AND t1.tidsp='start' ANND t2.tidsp='slut'
Avatar billede chrishunter Nybegynder
20. april 2010 - 16:22 #5
Ja, navnebror i Belgien, jeg misforstod, men arne_v er faktisk inde på det rigtige.

arne_v, jeg har lige et supplerende spørgsmål:
Når nu dintabel faktisk er en subselect, så det umiddelbart vil blive noget med

SELECT t1.andrefelter,t2.vaerdi-t1.vaerdi AS resultat
FROM (SELECT vaerdi FROM ...) t1, (SELECT vaerdi FROM ...) t2
WHERE t1.andrefelter=t2.andrefelter AND t1.tidsp='start' AND t2.tidsp='slut';

er der så en måde, hvorpå man kan give subselect'en de to aliaser t1 og t2 på én gang - og altså undgå at skrive den to gange?

Smid i øvrigt lige et svar.


Venlig hilsen

Christian
Avatar billede arne_v Ekspert
20. april 2010 - 16:36 #6
Ikke som subselect. Men du hvis du er paa 5.x kunne du jo lave et VIEW med den subselect.
Avatar billede arne_v Ekspert
20. april 2010 - 16:36 #7
og svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester