20. april 2010 - 08:17Der 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
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.
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.
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'
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?
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.