Hallo, ik heb een tabel met producten een tabel met de plaatjes die bij deze producten horen. De tabellen zien er zo uit:

Tabel 'producten'

model_id
model_naam
model_uitvoering

Tabel 'images'

image_id
image_naam
model_id

De afbeeldingen zijn dus met het model_id aan de modellen gekoppeld. Nu heb ik de volgende query:

SELECT DISTINCT producten.model_id, producten.naam, producten.uitvoering, images.image_naam FROM producten, images WHERE ( producten.model_cat_id = '$cat' AND producten.model_id = images.model_id )

Omdat 1 product meerdere afbeeldingen kan hebben wil ik bij deze query dat hij alle producten selecteert met slechts 1 afbeelding. Momenteel doet de query het goed maar krijg alleen meerdere records voor het zelfde product. Product met 3 plaatjes krijg ik nu dus ook 3 records.

Afbeeldingen zet ik in een apparte tabel omdat er dan geen limiet hoeft te zijn voor het aantal dat de gebruiker kan uploaden.
Ik denk dat je een distinct of group by nodig hebt op images.model_id. Meerdere images kunnen hetzelfde model_id hebben. Jij wilt er slechts eentje ophalen. Hopelijk kun je er wat mee.
Frank heeft gelijk, je hebt DISTINCT nodig op het veld images.model_id.

De query zou er als volgt uit kunnen zien:

SELECT DISTINCT images.model_id, producten.model_naam, producten.model_cat_id
FROM producten, images WHERE producten.model_id = images.model_id AND producten.model_cat_id = '$cat';

DISTINCT is niet het juiste vehikel voor dit soort opdrachten. Wanneer je query identieke rijen oplevert, kun je die er met distinct uithalen, maar als je alleen de modellen wilt hebben met 1 plaatje, is COUNT je vriend:

SELECT p.model_id, p.naam, p.uitvoering, i.image_naam
FROM producten p, images i
WHERE p.model_cat_id = '$cat'
AND p.model_id = i.model_id
GROUP BY i.model_id
HAVING COUNT(i.model_id) = 1;
roel schreef op 01.02.2006 14:47
Omdat 1 product meerdere afbeeldingen kan hebben wil ik bij deze query dat hij alle producten selecteert met slechts 1 afbeelding.

@ Willem vp: bovenstaande opmerking kan op 2 manieren gelezen worden:

1. selecteer alle producten waaraan slechts 1 afbeelding gekoppeld is (jouw oplossing)
2. selecteer alle producten, maar toon slechts 1 afbeelding (mijn oplossing)

Mooi met die COUNT.

Edit: typo.
Willem vp

Je heb mijn dag weer goed gemaakt :P
Burdy schreef op 01.02.2006 17:07
@ Willem vp: bovenstaande opmerking kan op 2 manieren gelezen worden:
Klopt, maar er werd ook gezegd:
Momenteel doet de query het goed maar krijg alleen meerdere records voor het zelfde product.
dus ging ik ervan uit dat hier sprake was van mogelijkheid 1 ;-)

Reageren