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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.