17. november 2005 - 15:47Der er
6 kommentarer og 2 løsninger
Minimere SQL kald
Jeg har to tabeller, og der gælder at en Person altid har 3 telefon numre. Jeg vil gerne have en SQL som retunerer (person_id, navn,tlf_nr,tlf_nr,tlf_nr)
tbl1: [person_id][navn] 1 Per 2 klaus tbl2: [person_id][tlf_nr] 1 1111 1 1222 1 86868686 2 33 2 111 2 11111
Hvordan laver jeg en SQL som retunerer: [1][Per] [1111][1222][86868686] [2][klaus][33] [111] [11111]
Grunden til at jeg ønsker at få dette resultat fra min SQL er at undgå at skulle lave det i enten PHP eller via flere SQL's.
Efter lidt roden og læsen fandt jeg desværre ud af at jeg ikke kan bruge GROUP_CONCAT, , da min host KUN har "MySQL 4.0.18" :(
--------------------------------------------------------------------------------- GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]] [SEPARATOR str_val]) This function was added in MySQL version 4.1. ---------------------------------------------------------------------------------
SELECT tbl1.navn,tbl2_1.tlf_nr,tbl2_2.tlf_nr,tbl2_3.tlf_nr FROM ((tbl1 JOIN tbl2 tbl2_1 ON tbl1.person_id=tbl2_1.person_id) JOIN tbl2 tbl2_2 ON tbl1.person_id=tbl2_2.person_id AND tbl2_2.tlf_nr>tbl2_1.tlf_nr) JOIN tbl2 tbl2_3 ON tbl1.person_id=tbl2_3.person_id AND tbl2_3.tlf_nr>tbl2_1.tlf_nr AND tbl2_3.tlf_nr>tbl2_2.tlf_nr;
Arne_v dit svar gør som jeg ønsker, desværre har jeg faktisk 10 tlf_nr i min reelle da, knyttet til hver person. Så ... det bliver en dæbende stor SQL at skulle skrive.
Begge svar var gode, så hvis i begge point hvis i smider et svar!
svar .. (forhåbentlig kan du få din udbyder til at opgradere - der er ikke noget værre end at køre på gammel software :-))
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.