Ga naar inhoud
  • 0

ExecuteSQL doet geen subqueries?


hans erik

Vraag

Ik dacht ik haal mijn SQL kennis eens van stal en probeer iets meer in elkaar te zetten dan alleen een hele platte query, maar ik loop al gauw vast:

 


SELECT c.omschrijving, e.id, e.aantal
FROM ref_cursus c INNER JOIN
 ( SELECT d.id_cursus AS id, COUNT (d.id_cursusdata_pk) AS aantal
   FROM ref_cursusdata d
   WHERE d.jrmd BETWEEN '201401' AND '201406'
   GROUP BY d.id_cursus ) e
ON c.id_cursus_pk = e.id

 

Toelichting: tussen de haakjes bepaal ik eerst een breakdown van de tabel ref_cursusdata(d). Die breakdown krijgt een alias 'e' en die join ik dan met de stamtabel ref_cursus ©.

 

Volgens mij is dit goede SQL, maar Filemaker komt met een vraagtekentje...

 

Moet ik concluderen dat subqueries niet mogelijk zijn?

Link naar reactie

2 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Is de waarde in de kolom jrmd misschien een getal? Dan horen de single-quotes niet in BETWEEN '201401' AND '201406'

 

Ik heb zoiets nog niet geprobeerd met een geneste query in een JOIN-declaratie, maar wel met de IN-clausule en als je dan bijvoorbeeld:

SELECT kolom FROM tabel WHERE anderekolom IN ( SELECT kolom FROM anderetabel WHERE etcetc )

doet, dan heeft Filemaker daar erg veel moeite mee. Wijzig je dit in 2 aparte queries:

hulpresultaat = SELECT kolom FROM anderetabel WHERE etcetc
eindresultaat = SELECT kolom FROM tabel WHERE anderekolom IN ( hulpresultaat )

dan krijg je het resultaat in een fractie van de tijd terug. Kortom FM houdt van eenvoudige recht toe, recht aan queries.

Link naar reactie
  • 0

Nee, jrmd is een tekstwaarde. In een simpele query werkt dat ook prima.

 

Die IN clause heb ik ook mee geëxperimenteerd en dat werkt wel aardig als je een beperkte lijst hebt. Alleen met een paar honderd items wordt het een beetje bezwaarlijk.

 

Maar kennelijk ondersteunt de 'interne' SQL engine maar een heel beperkte set. Een LEFT OUTER JOIN gaat bijvoorbeeld wel, maar een RIGHT OUTER JOIN weer niet.

 

Dat zijn overigens wel features waar SQL echt veel handiger kan zijn dan de FileMaker relaties, dus ik hoop dat ze dit gauw fixen.

 

Ik heb in dit verband nog wel een feature request: import from field of import from variable. Gewoon een import scriptstap zoals we al sinds FIleMaker 3 kennen, maar dan met een tekstveld als source. Je kunt dan de resultaten van een SQL query of een List(...) functie snel in een tabel omzetten zonder eerst een export naar een tekstbestand te hoeven doen (of een loop).

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...