[SQL] Omgedraaide INNER JOIN

Pagina: 1
Acties:
  • 61 views sinds 30-01-2008

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 10-02 07:21
Stel, ik heb 2 tabellen met onderstaande waarden:

Tabel1:
1
2
3
4
5
6

Tabel2:
1
2
3
5
6

Als ik hierop een INNER JOIN loslaat, krijg ik 1, 2, 3, 5 en 6 als resultaat, maar ik wil juist precies het andersom resultaat, dus alleen record 4.

Kan mij iemand een duwtje in de goede richting geven? Of bestaat er al een standaard SQL ding die dit doet?

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
SELECT * FROM tabel1 LEFT JOIN tabel2 ON ... WHERE tabel2.veld IS NULL

:)

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Een outer join dus :)


Iets met niet voorkauwen maar de goeie richting wijzen enzo ;)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Goed. Redelijk basic stuff dus.
Had simpel gegoogled kunnen worden, of door de geijkte plaatsen eens na te lopen zoals http://www.w3schools.com/sql/sql_join.asp of je SQL handleiding.

Voortaan even verder kijken dan je neus lang is ;)

edit:
En als aanvulling; het staat zelfs in onze enige echte eigen FAQ *O*

[ Voor 50% gewijzigd door RobIII op 30-08-2006 22:56 ]

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


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Er zijn nog wel wat alternatieven:

Deze werkt waarsch vooral alleen met je exacte voorbeeld.
SELECT * FROM tabel1 EXCEPT SELECT * FROM tabel2

Deze kan efficient uitgevoerd worden, maar dat zal afhangen van je database:
SELECT * FROM tabel1 t1 WHERE t1.id NOT IN (SELECT id FROM tabel2 t2)

Ik gok dat deze nog wel eens de performancekroon gaat krijgen, als je databases subqueries efficient ondersteund. Uiteraard afhankelijk van je tabellen, indexen en database, etc.
SELECT * FROM tabel1 t1 WHERE NOT EXISTS (SELECT * FROM tabel2 t2 WHERE t2.id = t1.id)

Bij MySQL zal de variant van Shadowman zo'n beetje de enige goede keus blijken te zijn denk ik.

Dit topic is gesloten.