Složené SQL dotazy je sestava několika jednoduchých SQL dotazů. Jednotlivé dotazy začínají dvojicí závorek <queryitem~name="jmeno"><sql> a končí dvojicí závorek </sql></queryitem>. Vyjímkou je druhá ukončovací závorka prvního dotazu, která se píše až za poslední dotaz složeného dotazu (viz. syntaxe). Složené dotazy se používají pouze jako výběr informací pro následný tisk.
<queryitem name="jméno1"> <sql>select ....</sql> <queryitem name="jméno2"> <sql>select ....</sql> </queryitem> <queryitem name="jméno3"> <sql>select ....</sql> </queryitem> <queryitem name="jméno4"> <sql>select ....</sql> </queryitem> </queryitem>
Ve složených dotazech nelze porovnávat hodnoty pomocí znaků <,> nebo <>. Tyto znaky musíme nahradit a to následovně:
Nebo uzavřít text <sql> do značky <![CDATA[Tady je text]]>
Příklad: Chceme vybrat všechny označené Partnery a k nim všechny akce z druhu "kon"
<queryitem name="partneri"><sql> select idpartner, firma from partneri_partneri order by idpartner</sql> <queryitem name="akce"><sql> select * from partneri_akce akce where akce.idpartner=:idpartner and iddruh = 'kon'</sql> </queryitem> </queryitem>
Řádek akce.idpartner=:idpartner v posledním dotazu slouží k tomu, že vybrané akce se přiřadí ke správnému partnerovi vybranému ve druhém dotazu. U takovéhoto přiřazování se ukončovací závorka druhého dotazu musí napsat až za následný dotaz. Systému se tímto řekne že vybrané záznamy musí přiřazovat k záznamům vybraným předchozím dotazem.