Hoe krijg het aantal van een unique waarde met een join
SELECT person.*, horse.*, 2010Combination.*
FROM FEIPerson AS person
INNER JOIN 2010Combination ON person.fei_id = 2010Combination.personFEIid
INNER JOIN FEIHorse horse ON horse.fei_id = 2010Combination.horseFEIid
WHERE `gender_p` LIKE 'male'
Hierbij kan person.fei_id meerdere keren voorkomen dus wil ik deze records eruit filteren.
Ik ben al aan het proberen geweest met DISTINCT maar dat lveret alleen maar fouten op.
Al gezocht op het net maar dat levert alleen maar voorbeelden op met COUNT op een enkele tabel.
suggesties, enz.
Ten tweede, wat je wilt is een oneigenlijke vraag. Bedenk wat je uit te database probeert te halen. Je selecteert alle personen en koppelt daaraan alle paarden waarmee die persoon een combinatie maakt. Als dat meerdere paarden zijn, dan krijg je dus per persoon meerdere rijen in je resultset.
Zeg 'Piet' doet met twee paarden mee, 'paard1' en 'paard2'. Nu vraag jij om 1 van die twee rijen gewoon weg te gooien. Heb je dan ook al bedacht dat je dus 1 van die 2 paarden weggooit? Welk paard wil je er dan uit hebben en waarom? En hoe moet je database weten welk paard weg moet?
Bedenk dus nog eens wat je wilt, want wat je nu vraagt is niet correct.
Dit was dus voor mij een handig uitgangspunt.
Eigenlijk wil ik van alle personen (person.fei_id) die in 2010Combination aanwezig is weten hevoeel unieke mannen en vrouwen aanwezig zijn. Het gaat dus niet om de paarden.
Met dat in het achterhoofd moet je nog eens nadenken over wat je nu wil. Je wil dus alleen de personen hebben, maar je selecteert alle kolommen uit alle tabellen. Beetje nutteloos dus, denk je niet?
Harry H Arends op 05/09/2013 09:14:14:
Eigenlijk wil ik van alle personen (person.fei_id) die in 2010Combination aanwezig is weten hevoeel unieke mannen en vrouwen aanwezig zijn.
Ik sluit me helemaal aan bij Erwin. Waarom ga je dan de paarden erbij betrekken?
In dit hoofdstuk van mijn tutorial staat een voorbeeld met een inner join query waardes uit een tabel kunt ophalen die in de andere minimaal 1 maal voorkomen.