18. marts 2008 - 20:37Der er
15 kommentarer og 2 løsninger
sql select syntax
Hej,
kan i hjælpe mig med et lille formentlig almindelig problem :)
Brugerne kan vælge mellem 4 forskellige bokse, hvor de kun kan udfylde den ene..(resten får værdien "-". Jeg skal så i min sql have hevet disse ud i samme sammenhæng.. Altså ønsker en form for case, hvor den henter "felt1" AS Talvalg" if not "-" else "felt2" AS talvalg if not "-" .. håber det var rimelig forståeligt.. Altså må der ikke bare selectes 4 gange... Må kun komme ud som en enkelt kolonne ...
det kan sikkert gøres smartere, men lav en stored procedure i stil med det her.. virker 100%.
Nu har jeg digtet tabel navn og kolonne navne.
if(exists(select ValgA from ValgMuligheder where ValgA <> '-')) select ValgA from ValgMuligheder where ValgA <> '-' else if(exists(select ValgB from ValgMuligheder where ValgB <> '-')) select ValgB from ValgMuligheder where ValgB <> '-' else if(exists(select ValgC from ValgMuligheder where ValgC <> '-')) select ValgC from ValgMuligheder where ValgC <> '-' else if(exists(select ValgD from ValgMuligheder where ValgD <> '-')) select ValgD from ValgMuligheder where ValgD <> '-'
hmm returnerer udmiddelbart kun for de første forespørgsel, hvis først én person har levet op til den første forespørgsel så bliver den ved med at spørge på første kolonner.. kan det passe ?
Denne select: SELECT id, CASE WHEN col1 = '-' AND col2 = '-' AND col3 = '-' THEN col4 WHEN col1 = '-' AND col2 = '-' AND col4 = '-' THEN col3 WHEN col1 = '-' AND col3 = '-' AND col4 = '-' THEN col2 WHEN col2 = '-' AND col3 = '-' AND col4 = '-' THEN col1 END AS col FROM testTable
giver: id | col -------- 1 | 9:30 2 |10:30 3 |11:30 4 |12:30 5 |13:30 6 |14:30
som jeg forstår er det du ønsker.
En anden måde der giver samme resultat: SELECT * FROM ( SELECT id, col1 AS col FROM testTable WHERE col1 <> '-' UNION ALL SELECT id, col2 AS col FROM testTable WHERE col2 <> '-' UNION ALL SELECT id, col3 AS col FROM testTable WHERE col3 <> '-' UNION ALL SELECT id, col4 AS col FROM testTable WHERE col4 <> '-' ) t2 ORDER BY id
Synes godt om
Ny brugerNybegynder
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.