Toon posts:

[SQL] waarden die niet in tabel2 voorkomen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Howdy

Ik heb tabel1 met daarin
ID (key) | NAME | etc.

en een tabel2
ID (key) | tabel1.id | tabel3.id

nu wil ik alle ID's van tabel1 selecteren welke NIET in tabel2.tabel1.id voorkomen.

Ik heb al een hoop zitten prutsen en kutten, maar ik kom er niet uit :(

Iemand suggesties?

Verwijderd

Je kunt NOT IN gebruiken ic met een subquery.

  • Ignoramus
  • Registratie: December 2001
  • Laatst online: 27-05 19:18
Verwijderd schreef op 27 januari 2004 @ 19:54:
Je kunt NOT IN gebruiken ic met een subquery.
Dat wordt dit:
SELECT ID FROM tabel1 WHERE ID NOT IN (SELECT ID FROM table2)

Bij IT-ers gaat alles automatisch, maar niets vanzelf Workstation Server


Verwijderd

Topicstarter
Ik dacht dat het nu zou lukken, maar toch nog niet.

In me volgende post staat meer informatie (2 post naar beneden)

(soz for edit)

[ Voor 71% gewijzigd door Verwijderd op 28-01-2004 18:57 . Reden: problem nog niet opgelost, 2 posts lager staat het probleem opnieuw en beter beschreven ]


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 09:07
Voor MySQL o.i.d. zonder goede subquery ondersteuning iets als:
code:
1
2
3
4
5
SELECT id 
FROM tabel1 
  LEFT JOIN tabel 2 
ON tabel1.id=tabel2.tabel1id 
WHERE IS_NULL(tabel2.id)

[ Voor 36% gewijzigd door djluc op 27-01-2004 20:00 ]


Verwijderd

Topicstarter
Het lukt nog niet helemaal.

Ik heb geprobeerd
code:
1
2
3
4
   $sql = "SELECT NAMEN.ID AS NID, NAMEN.NAME AS NNAME 
               FROM NAMEN 
               WHERE NAMEN.ID NOT IN 
                    (SELECT NAMEN_ID FROM NAMEN_TEAMS)";

en
code:
1
2
3
4
5
   $sql = "SELECT NAMEN.ID AS NID, NAMEN.NAME AS NNAME 
               FROM NAMEN 
                   LEFT JOIN NAMEN_TEAMS 
               ON NAMEN.ID = NAMEN_TEAMS.NAMEN_ID 
               WHERE IS_NULL (NAMEN_TEAMS.ID)";

en
code:
1
2
3
4
5
   $sql = "SELECT NAMEN.ID AS NID, NAMEN.NAME AS NNAME 
               FROM NAMEN 
                   LEFT JOIN 
               NAMEN_TEAMS ON NAMEN.ID = NAMEN_TEAMS.NAMEN_ID
               WHERE IS_NULL (NAMEN_TEAMS.NAMEN_ID)";

Dit gaf de foutcode:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in page.php on line 50

line 1 en 2 zijn line 49 en 50 in mijn .php bestand
code:
1
2
3
4
   $query = mysql_query($sql);
   while ($row = mysql_fetch_array($query)) {
      code om de info te printen
   }


Ik zal even de tabellen iets nader uitleggen.
tabel1 = NAMEN
ID (key) | NAME | ADRES | etc.

tabel2 = NAMEN_TEAMS
ID (key) | NAMEN_ID | TEAMS_ID

Nu wil ik alle NAME's selecteren uit tabel NAMEN waarvan de ID's niet voorkomen in tabel NAMEN_TEAMS

Misschien moest ik erbij zetten dat ik deze query in PHP/MYSQL combinatie gebruik. (ik zag dat ik dit vergeten was, mijn fout |:( )

MvG WaanZin

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Ik zal even de tabellen iets nader uitleggen.
tabel1 = NAMEN
ID (key) | NAME | ADRES | etc.

tabel2 = NAMEN_TEAMS
ID (key) | NAMEN_ID | TEAMS_ID

Nu wil ik alle NAME's selecteren uit tabel NAMEN waarvan de ID's niet voorkomen in tabel NAMEN_TEAMS
daar kunnenw e tenminste wat mee ;)
Misschien moest ik erbij zetten dat ik deze query in PHP/MYSQL combinatie gebruik. (ik zag dat ik dit vergeten was, mijn fout )
Dan is de oplossing makkelijk te doen in 2 queries.

gebruik een SELECT query om alle ID's te krijgen uit de team-table. plak ze aan elkaar vast als volgt: " (id1, id2, id3, id4) "

en doe een tweede query met NOT IN.
Ik zal even kijken of het ook netter kan ;) (Vast wel.)
MvG WaanZin
Tweakers groeten elkaar altijd, stop wasting precious bytes :P

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1