Jump to content
  • 0

ExecuteSQL doet geen subqueries?


hans erik

Question

Posted

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?

2 answers to this question

Recommended Posts

  • 0
Posted

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.

  • 0
Posted

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).

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...