Toon posts:

[mySQL] Alternatief voor self-joins met subquery*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een tabel met de volgende velden:
- ID
- moederID

Het moederID verwijst weer naar een ID in dezelfde tabel.

Nu wil ik alle ID's van de rijen die een moederID hebben met, laten we zeggen, de waarde 12. Dat is geen probleem:
code:
1
2
3
SELECT ID
FROM tabel
WHERE moederID = 12

maarrr...ik wil ook weer alle ID's van de rijen waarvan het moederID gelijk is aan één van de zojuist opgehaalde ID's.
En dat alles in 1 query. snap je em nog?
Het moet kunnen volgens mij, alleen ik kom er niet helemaal uit.
In SQL is het makkelijk, dan wordt het zoiets als:
code:
1
2
3
4
5
6
7
SELECT ID
FROM tabel
WHERE moederID IN (
      SELECT ID
      FROM tabel
      WHERE moederID = 12)
OR moederID = 12

maar ja.. MySQL accepteerd nog geen subquery's voor zover ik weet

iemand?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

select a.ID from tabel a, tabel b
where (a.moederID = b.ID and b.moederID = 12)
OR
(a.moederID = 12 and b.ID = a.ID)

?
Die 2e AND is om te voorkomen dat je een carthetisch product krijgt ;)

Verwijderd

Topicstarter
Op maandag 01 juli 2002 21:49 schreef ACM het volgende:
select a.ID from tabel a, tabel b
where (a.moederID = b.ID and b.moederID = 12)
OR
(a.moederID = 12 and b.ID = a.ID)

?
Die 2e AND is om te voorkomen dat je een carthetisch product krijgt ;)
tabel a en b zijn in dit geval wel dezelfde he, maar ik probeer het even

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 01 juli 2002 21:52 schreef mentos het volgende:
tabel a en b zijn in dit geval wel dezelfde he, maar ik probeer het even
joh ? :P

Anders kan het volgens mij niet :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:16
Ik heb de titel even aangepast.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Daim, it works deliciouly. Bedankt man!

Uit de (nieuwe) titel begrijp ik dat het ook met joins kan? Want daar liep ik dus de hele tijd mee te kloten.

  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
Dit een (impliciete) join. Met een subquery kan het ook, maar dat ondersteund MySQL niet. Versie 4 van MySQL wel trouwens, maar die is nog niet stable.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

= is een join (equijoin) en tabel aan tabel joinen is een self-join :)

Dat gebruikte je dus al, maar de termen kende je nog niet :)
Op maandag 01 juli 2002 21:59 schreef Vigory het volgende:
Met een subquery kan het ook, maar dat ondersteund MySQL niet.
Joh?
Waarom denk je dat ie dat in zijn topicstart zette ??

Verwijderd

Topicstarter
hehe, ja precies. En die termen kende ik inderdaad allemaal nog niet. Ik leer het mezelf allemaal maar aan vandaar
maar bedankt jongens, ik kan weer verder
Pagina: 1