11. december 2006 - 18:55Der er
15 kommentarer og 1 løsning
udtræk fra 2 tabeller
Hej
Jeg har følgende:
indhold i tbltimer: 12-12-2006 13-12-2006 14-12-2006
indhold i tbloetimer: 12-12-2006 13-12-2006 14-12-2006
Udtræk skal se således ud: 12-12-2006 12-12-2006 13-12-2006 13-12-2006 14-12-2006 14-12-2006
Har oprettet samme spm i mysql-kategorien hvor forslaget var UNION i sql'en, men det kan jeg ikke bruge da tabellerne ikke er ens. Og det lader ikke til der er andre forslag til sql'en - derfor søger jeg en php-løsning.
Der er mange felter...: SELECT UNIX_TIMESTAMP(tt.oprettet) AS oprettet, UNIX_TIMESTAMP(tt.redigeret) AS redigeret, UNIX_TIMESTAMP(tt.arbejdsdato) AS arbejdsdato, UNIX_TIMESTAMP(tt.start) AS start, UNIX_TIMESTAMP(tt.slut) AS slut, tt.id, tt.opretterid, tt.editorid, tt.brugerid, tt.ordreid, tt.timer, tt.tillaegstimer, tt.kommentar, tb.navn AS brugernavn, tb2.navn AS opretternavn, tb3.navn AS editornavn, tol.rekvisition, tk.fornavn, tk.efternavn, tk.firma
FROM tbltimer AS tt
LEFT JOIN tblbruger AS tb ON tb.id = tt.brugerid
LEFT JOIN tblbruger AS tb2 ON tb2.id = tt.opretterid
LEFT JOIN tblbruger AS tb3 ON tb3.id = tt.editorid
LEFT JOIN tblorders AS tol ON tol.id = tt.ordreid
LEFT JOIN tblkunder AS tk ON tol.kundeid = tk.id
WHERE tt.brugerid = '$brugerid' AND (UNIX_TIMESTAMP(tt.arbejdsdato) BETWEEN $start AND $slut)
UNION SELECT id FROM tbloetimer AS toe WHERE toe.userid = '$brugerid' AND (UNIX_TIMESTAMP(toe.fra) BETWEEN $start AND $slut)
ORDER BY arbejdsdato, start
Og det virker naturligvis ikke som det ser ud her, pga der ikke er lige mange felter i hver tabel
navnene på kolonnerne i tabel2 plejer nu ikke have nogen betydning.
Mht din sortering, så får du nok et problem, da hvert udtræk sorteres for sig selv. Dvs de flettes ikke sammen, for derefter at blive sorteret, som du gerne vil have dem til
Det er naturligvis også noget vrøvl ;) Det kan sagtens lade sig gøre, ved blot at tilføje en ORDER BY. Mit tidligere eksempel:
(SELECT tbltimerfelt AS dato FROM tbltimer) UNION (SELECT tblloetimerfelt AS dato FROM tbloetimer) ORDER BY dato
...gør præcist det. Sorterer hele det resulterende resultatsæt. Man kan sågar bruge LIMIT på den også, det er stadig hele det samlede resultatsæt (forudsat at du har brugt parenteser om SELECTs).
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.