SELECT BILLEDER.sti, MOEBLER.varenr, MOEBLER.navn, MOEBLER.fk_type, MOEBLER.fk_designer, MOEBLER.aar, MOEBLER.pris, MOEBLER.beskrivelse FROM MOEBLER FROM (SELECT fk_moebelid, MIN(id) AS MINid FROM BILLEDER GROUP BY fk_moebelid) AS M ON M.fk_moebelid = MOEBLER.id INNER JOIN BILLEDER ON BILLEDER.id = M.id WHERE (MOEBLER.fk_type = 1)
eller
SELECT BILLEDER.sti, MOEBLER.varenr, MOEBLER.navn, MOEBLER.fk_type, MOEBLER.fk_designer, MOEBLER.aar, MOEBLER.pris, MOEBLER.beskrivelse FROM BILLEDER INNER JOIN MOEBLER ON BILLEDER.fk_moebelid = MOEBLER.id WHERE (MOEBLER.fk_type = 1) AND BILLEDER.id = ( SELECT MIN(id) FROM BILLEDER M WHERE B.fk_moebelid = BILLEDER.fk_moebelid )
Du kunne tilføje en markering i billedtabellen som markerer det billede du gerne vil udtrække, til f.eks. forsiden, og dermed bliver sql'en også meget simplere, så skal du bare tilføje f.eks. WHERE billeder.paa_forsiden = 1
I mit sidste bidrag opdager jeg til min rædsel (nå.. ok, måske ikke ligefrem rædsel, men så ubehag da *G*), at jeg har benyttet et forkert navn på aliaset.
Det skulle naturligvis have været:
... WHERE (MOEBLER.fk_type = 1) AND BILLEDER.id = ( SELECT MIN(id) FROM BILLEDER B WHERE B.fk_moebelid = BILLEDER.fk_moebelid )
teepee har naturligvis ret i, at hvis det er vigtigt hvilket af billederne der vises, så er den eneste rigtige vej at markere det billede, der er det "vigtigste".
Jeg gik ud fra, at du principielt var ligeglad med, hvilket af billederne der vistes, bare der kun kom et billede pr. produkt. Det var ligesom det, dit spørgsmål spørgsmål fik mig til at tro.
Nu efter at have genlæst spørgsmålet er jeg kommet lidt i tvivl.
Du skriver:
"Det som jeg gerne vil er at trække alle møbler ud som har type=1 ( der er kun en pt ) og de 3 billeder som hører til det ENE møbel.
men når jeg gør det så viser den 3 rækker, alle af samme møbel, og hvert sit billede."
Det er jo lidt selvmodsigende. På den ene side vil du have vist alle tre billeder. På den anden side vil du ikke have vist informationerne der er fælles for billederne tre gange? Det er nu engang sådan SQL virker. Det er så op til dig i dit program at behandle disse data, hvis du f.eks. vil have vist data fra moebler 1 gang og herefter de tre billeder.
Hvis det er der det strander, så er det faktisk ofte bedre at gøre det som to forespørgsler (især hvis du kun vil vise 1 møbel ad gangen). Altså:
1. Indlæs data fra MOEBLER på dit produkt 2. Udskrive data i dit program 3. Indlæs data fra BILLEDER, hvor du angiver indholdet fra id i MOEBLER som kriterie. 4. Loop gennem billederne og vis dem i dit program
Hvis du vil bruge det til f.eks. et katalog, hvor du vil liste alle dine varer med tilhørende billeder, kan det til gengæld være en fordel at benytte sig af den metode du bruger i dit spørgsmål. Her vil du så skulle gennemløbe alle rækker, og så udskrive vareoplysninger hver gang der er brud på MOEBLER.id (brud på = den skifter værdi)
Jeg ved ikke, om noget af dette dækker dit problem. Ellers må du uddybe...
lige pt tester jeg på liv og løs jeres dejlige forslag. vender skarpt tilbage i aften/nat
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.