SQL query - kun én linje pr. firma ved sammenknytning af tabeller
Jeg skal udtrække data fra to tabeller der ser sådan ud:
TABEL 1: ID1,NR,FIRMA,NAVN ('NR' unik nøgle)
TABEL 2: ID2,NR,DATA ('NR' unik)
TABEL 3: ID3,NR,EMAIL (multiple af samme 'nr' mulige)
De tre tabeller er knyttet sammen via 'NR'-feltet.
Jeg vil gerne lave en query der giver følgende resultat:
FIRMA,NAVN,DATA,EMAIL
men kun en linje pr. firma, dvs. uanset at der måtte være flere e-mail adresser, så er det kun den første der kommer med. Hvordan kan jeg gøre det?
(Resultatet skal se ud ligesom det man får ved "SELECT tabel1.firma,tabel1.navn,tabel2.data,tabel3.email FROM tabel1, tabel2, tabel3 WHERE tabel1.nr=tabel2.nr AND tabel1.nr=tabel3.nr" men altså med kun én linje pr. firma).
SELECT tabel1.firma,tabel1.navn,tabel2.data,max(tabel3.email) FROM tabel1, tabel2, tabel3 WHERE tabel1.nr=tabel2.nr AND tabel1.nr=tabel3.nr group by tabel1.firma,tabel1.navn,tabel2.data
Formålet med denne select er at returnere en email-adresse, ikke? Hvorfor så joine med tabel2? Hvad med de firmaer der ikke har en email? Skal der være null i kolonnen eller skal de ikke med?
Hvis muligt bør du revidere felternes navne. Jeg har fundet det mest hensigtsmæssigt at man simpelthen kalder fremmednøglen <tabelnavn>_<primærnøgle>, eksempelvis firma_nr. På den måde er man aldrig i tvivl. Desuden ville jeg overveje at fjerne ID'erne - eller omdøbe nr til ID, dvs. Det er mere logisk at nøglerne hedder ID fremfor Nr.
@hrc Tak, men navnene her er bare eksempler - den rigtige tabel hedder noget andet. Og formålet er ikke at finde e-mail adresser, men at udtrække data om firmaerne, inklusiv e-mail adresse som står i en separat tabel.
@erik Det ser fornuftigt ud - jeg prøver det, smid lige et svar.
Det gør det vist, men jeg har så det nye problem at jeg i mit resultat bruger "EMAIL", som nu ikke længere findes i resultatsættet...Hvad kan jeg mon gøre ved det?
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.