Hallo daar allemaal.

Kort vraagje (denk ik)
Is het mogelijk met MySQL meerdere waardes uit te zonderen? Ik zal het even toelichten.

Ik heb een koppeltabel waarin een contactgroep is op genomen waaraan contactpersonen aangekoppeld kunnen worden. Dit wordt gedaan aan de hand van een id. Ik toon nu een overzicht van alle contactpersonen met daarachter bij welke groepen ze horen. Het aantal groepen kan varieren voor elk contactpersoon. Achter deze kolommen staat een knopje waarmee je een divje tevoorschijn tovert. In dit divje staan nu nog alle groepen. Ik wil dit terugbrengen naar alle, nog niet toegevoegde groepen per contact.

Is dit mogelijk met MySQL? Je kunt natuurlijk uitzonderingen maken door WHERE id != 1 AND id!=2 AND... etc. te gebruiken, maar omdat niet voor iedere contactpersoon dezelfde groepen gebruikt worden, lijkt mij dit een zeer omslachtige manier.

Ik hoor het graag van jullie, goeroes!!!

Groeten Douwe
Klinkt mij in de oren als een NOT IN()

SELECT
  *
FROM
  tabelnaam
WHERE
  id NOT IN(1,2,47);
Je zult dan per contact persoon een aparte query uit moeten voeren die er ongeveer zo uit zal zien:

SELECT
	groep
FROM
	groepen
WHERE
	groep_id NOT IN (
		SELECT groep_id
		FROM personen_groepen
		WHERE persoon_id = $id_van_persoon$
	)

Je maakt dus gebruik van een subquery om alle groepen te selecteren waarvan een contactpersoon op dit moment lid is. In die query stelt 'personen_groepen' de koppeltabel voor en $id_van_persoon$ het id van de betreffende contactpersoon. Die zul je met behulp van een variabele vanuit PHP in moeten voegen.

Reageren