Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Hoe ga ik deze query aanpakken?

Pagina: 1
Acties:

  • amphora
  • Registratie: December 1999
  • Laatst online: 17:18

amphora

Websites & Fotografie

Topicstarter
Ik heb een tabel met email adressen (members). En een tabel met groepen. Email adressen worden aan een groep gekoppeld met een tussentabel:

[members]:id,email,name
[groepen]:id,groupname
[groupmembers]:memberid,groupid

Het is vrij simpel om met 1 query alle email adressen te tonen die in een groep zitten:
SELECT email FROM members,groupmembers WHERE members.id=groupmembers.emailid AND groupmembers.groupid=$id

Maar nu wil ik 1 query hebben die alle email adressen laat zien die niet in een groep zitten.
Ik kwam zelf niet verder dan een
SELECT id,email FROM members
en die dan regel voor regel nalopen met de volgende query:
SELECT memberid FROM groupmembers WHERE memberid=$id ($id is dan de id van de vorige query).
Als aantal gevonden regels=0 dan is het adres dus niet in een groep. Het werkt. Maar met een bestand van 3000 email adressen is deze manier zo traag als dikke stront omdat die query 3000x wordt uitgevoerd.

Is een dergelijke query niet gewoon in één (snelle) query te proppen?

[ Voor 10% gewijzigd door amphora op 24-07-2007 14:56 ]

nickdekruijk.nl Websites & Fotografie


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk eens in onze joins-FAQ? ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 12:05
Hint 2: Iets met "WHERE groepid Is Null"

  • amphora
  • Registratie: December 1999
  • Laatst online: 17:18

amphora

Websites & Fotografie

Topicstarter
Ik heb nu het volgende:

SELECT email,groupid
FROM members
LEFT JOIN groupmembers ON ( members.id = groupmembers.memberid )

dan laat hij alle members zien en bij sommigen regels zie ik inderdaad dat groupid NULL is.
Maar als ik WHERE groupid=NULL toevoeg laat hij gelijk helemaal niets zien.

Edit: Sukkel, het moest groupid IS NULL zijn (geen = teken, hehe)

Bedankt voor de snelle reacties, en sorry dat ik die FAQ niet eerder had ontdenkt ;-)

[ Voor 33% gewijzigd door amphora op 24-07-2007 15:13 ]

nickdekruijk.nl Websites & Fotografie