[PHP/MySQL] MySQL uit meerdere cols unieken zoeken

Pagina: 1
Acties:
  • 1.018 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
Ik zit met het volgende,.. ik heb een mysql tabel met de volgende kolommen:

LANGUAGE1, LANGUAGE2, LANGUAGE3, LANGUAGE4

Voorbeelden van input:

engels, duits, frans, spaans
noors, engels, nederlands, frans
engels, duits, nederlands, grieks

Hoe output ik deze unieke talen met 1 query? Ik ben aan het pogen geweest met distinct e.d., maar voor de rest kom ik met boeken en internet niet verder; de vraag is moeilijk te formuleren. Hopelijk heeft iemand een idee wat ik precies bedoel, en hoe ik dit oplos.

De output die ik dus zoek (door middel van 1 query) is als volgt:

engels, duits, frans, spaans, noors, nederlands, grieks

Oftewel,.. een query die ervoor zorgt dat elke waarde 1 keer wordt weergegeven.

Acties:
  • 0 Henk 'm!

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
op het moment dat je meerder velden hebt binnen 1 tabel die dezelfde soort waarde bevatten, heb je vaak een verkeerd ingedeelde tabel (niet altijd, maar vaak).

Ik ken de exacte toepassing natuurlijk niet, maar het zou mij niet verbazen als je een tabel met deze velden zou kunnen gebruiken:

verzamel_idtaal
1engels
1duits
1frans
1spaans
2noors
2engels
2nederlands
2frans
3engels
3duits
3nederlands
3grieks

En dan is het vast niet meer moeilijk om te bedenken hoe je de unieke waarden van veld taal queryt.

Acties:
  • 0 Henk 'm!

  • narotic
  • Registratie: Maart 2002
  • Laatst online: 02-11-2021
Imho is dat nog steeds niet de juiste manier, omdat je met redundantie van data blijft zitten. Het gaat hier om een n-tot-n relatie (of wellicht gespecialiseerd n-tot-4). Dit modelleer je het best dmv een tussentabel. Bijvoorbeeld als:

ding {
id;
...
}

taal {
id;
naam;
}

ding_taal {
ding_id;
taal_id;
}

De unieke, gebruikte talen kun je nu eenvoudig uit de tabellen taal en taal_boek halen.

[ Voor 3% gewijzigd door narotic op 20-07-2007 04:53 ]

- = Step Into The Pit | Industrial Strength = -


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:01
Je kan verschillende dingen bij elkaar vegen met UNION. Zie http://dev.mysql.com/doc/refman/5.1/en/union.html

Je kan dus de output van (in jouw geval) 4 select statements combineren.

Acties:
  • 0 Henk 'm!

  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
rutgerw schreef op vrijdag 20 juli 2007 @ 09:43:
Je kan verschillende dingen bij elkaar vegen met UNION. Zie http://dev.mysql.com/doc/refman/5.1/en/union.html

Je kan dus de output van (in jouw geval) 4 select statements combineren.
Held! Gelukt!

Werkt makkelijk trouwens:

SELECT language3 as language FROM table
UNION
SELECT language4 as language FROM table
UNION
SELECT language5 as language FROM table