[SQL/Paradox] Probleem met query

Pagina: 1
Acties:

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 14:36

hneel

denkt er het zijne van

Topicstarter
Ik wil het volgende: Ik heb een tabel A met items en een tabel B met extra informatie van die items.
(Ik gebruik Borland C++ in combinatie met een Paradox database)

B.v.

Tabel A
NaamStadBla
Jan11
Piet21
Klaas32


Tabel B
StadNaam
1Amsterdam
3Rotterdam
4Antwerpen


Ik wil nu alles uit tabel A tonen waar "Bla = 1" en met de informatie uit tabel B er bij.
Maar "Piet" voldoet wel aan de voorwaarde "Bla = 1", maar heeft geen geldige link met tabel B, maar deze moet toch wel in het query resultaat komen.

Ik heb het al geprobeerd met een left join van beide tabellen, maar dan gaat het mis bij de voorwaarde "Bla = 1"

SQL:
1
2
3
4
SELECT *
FROM A LEFT JOIN B
  ON A.Stad = B.Stad 
 AND A.Bla = 1


Paradox ondersteunt helaas geen geneste SELECT statements.

Nu kent Paradox ook een eigen vorm van queries genaamd QBE, maar daar is het me ook nog niet in gelukt. Maar als je in Paradox zelf programmeert kan je ook gelinkte tabellen maken en daar gaat het dan wel op de manier die ik wil. Maar via die QBE queries dan weer niet. En bovendien willen we nou juist af van het programmeren in Paradox.

Ik heb het nu opgelost door 2 aparte queries te maken en dan de eerste in een tijdelijke tabel weg te schrijven en daar dan de 2e query op los te laten. Maar dat is erg omslachtig en traag. Kan het nou niet met een slimme SQL query zonder dat er geneste SELECT's in voorkomen?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Wat je geprobeert hebt lijkt me correct. Je zou nog LEFT OUTER JOIN kunnen proberen? Ik ben niet echt met de exact SQL syntax van paradox op de hoogte.

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Of idd met een FULL OUTER JOIN, moet idd wel goed zijn. Wellicht kun je die ON bla=1 weglaten en het in de WHERE zetten...

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:54
Een FULL OUTER JOIN doet heel wat anders dan een LEFT JOIN. Die werkt 'aan de 2 kanten'.

Je zal echter de filter-criteria wel in de WHERE moeten zetten, zoals Boland zegt.

https://fgheysels.github.io/


  • hneel
  • Registratie: Maart 2001
  • Laatst online: 14:36

hneel

denkt er het zijne van

Topicstarter
SQL:
1
2
3
4
SELECT * 
FROM A LEFT JOIN B 
  ON A.Stad = B.Stad  
WHERE Bla = 1


Yep. Dat werkt. Bedankt!

Ik was in de veronderstelling dat een ON in plaats van een WHERE kwam, maar je kan ze dus samen gebruiken. Zo leer je weer eens wat...

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
8)7 niet eens gezien dat er geen WHERE stond :X

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1