[MYSQL] filter in group by clause

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 20-09 01:17
Ik heb de volgende tabel:

1|1
1|3
2|2
3|1
3|2
3|3
4|2
4|3

Nu group ik op de eerste kolom, en dan wil ik filteren op bijv 2,3.
Dus ik wil de unieke id's op halen die zowel 2 als 3 hebben.
In dit geval zou dat dus 3 en 4 zijn.

Ik ben bezig geweest met allerlei subqueries maar kom er niet uit. Ik zou een soort van BIT_AND functie die dus alleen dan is flexibeler is.

Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
Om te filteren op gegroepeerde waarden heb je een having-clause nodig. In dit geval zou je bijvoorbeeld zoiets kunnen gebruiken:
SQL:
1
select eerste from x where tweede in (2, 3) group by eerste having count(*) = 2

Zo worden alleen de waarden uit de eerste kolom teruggegeven die precies twee waarden in de tweede kolom hebben die voldoen aan de where-clause. Zolang er geen dubbele regels in je tabel staan zijn dat dus precies de waarden met zowel een 2 als een 3. (als er wel dubbelen zijn moet je nog iets met distinct doen)

Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 20-09 01:17
Ja zoiets had ik ook al bedacht, ik dacht dat het misschien nog wel makkelijker was.
Bedankt iig.