Hoe krijg het aantal van een unique waarde met een join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Harry H Arends

Harry H Arends

04/09/2013 23:59:36
Quote Anchor link
Ik heb 3 tabellen die ik samenvoeg met joins:

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.
 
PHP hulp

PHP hulp

17/11/2024 13:22:07
 
Erwin H

Erwin H

05/09/2013 00:41:19
Quote Anchor link
Ten eerste, gebruik geen * om alle kolommen te selecteren. Dat is altijd een slechte gewoonte, maar in een join nog veel meer. In je resultset komen alle kolommen namelijk zonder tabel prefix terecht en als je dus in de tabel 'person' een kolom hebt met dezelfde naam als in tabel 'horse' dan raak je dus 1 van die kolommen gewoon kwijt! Schrijf je kolommen gewoon uit.

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.
 
Harry H Arends

Harry H Arends

05/09/2013 09:14:14
Quote Anchor link
Het eerste gedeelte gebruik ik altijd omdat 80% van de gegevens ten allentijde wordt gebruikt.
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.
 
Erwin H

Erwin H

05/09/2013 09:24:46
Quote Anchor link
Lees nog eens wat ik zeg over het eerste deel!

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?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/09/2013 16:38:11
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.