Toon posts:

[mysql] ogenschijnlijk makkelijke querie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik snap niet waarom ik het niet zie, want het lijkt zo makkelijk...maar post het daarom hier maar even

Ik heb twee tabellen met data waarbij bijna alles overlapt, op een paar rows na. Die rows wil ik selecteren

Dit:
code:
1
2
3
SELECT a.nr, a.naam
FROM a, b
WHERE a.nr != b.id

werkt dus niet (krijg je veel te veel rows terug).
Ik wil alle rows uit a terugkrijgen waarvan geldt dat het nr (een getal ook, het is een auto_increment kolom) niet voorkomt in b.id (id is ook een auto_increment kolom)

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
code:
1
2
3
SELECT a.nr
FROM a
WHERE a.id not in (SELECT b.id FROM b)


Je krijgt teveel rows terug omdat je die 2 tabellen niet met elkaar joined. Je krijgt dan nl. een cartesiaans produkt.
Bovenstaande query zou moeten werken.

Ow, ik zie nu dat het over MySQL gaat, en die ondersteunt geen subqueries, ....

https://fgheysels.github.io/


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

whoami: mysql dus geen subquery's ;)

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html
zie je hoe je het wel kan oplossen.
De select van whoami staat er bijna letterlijk tussen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Je zou het kunnen proberen door de boel met een outer join aan elkaar te koppelen. Vervolgens kun je alle enkele records opvragen door te kijken waar een veld uit b null is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
thnx, ik hebbum werkend!
nou alleen nog ff met select into aan de gang en hij's weer compleet :)

  • technocow
  • Registratie: Mei 2002
  • Laatst online: 26-06 22:17
ja, maar HOE heb je m dan aan de praat :?

Verwijderd

Verwijderd schreef op 07 oktober 2002 @ 11:28:
thnx, ik hebbum werkend!
nou alleen nog ff met select into aan de gang en hij's weer compleet :)
is inderdaad wel ff handig om te vertellen hoe je zulk soort dingen opgelost hebt ;)

Verwijderd

Topicstarter
sorry,
dit werd 'm uiteindelijk:
code:
1
2
3
4
SELECT a.*
FROM tabel_a AS a
LEFT JOIN tabel_b AS b ON b.id = a.nr
WHERE b.naam IS NULL

Daar zie je waarschijnlijk niet zoveel aan, maar als je die link volgt die acm gaf staat 't heel helder uitgelegd
Pagina: 1