Složené SQL dotazy

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ě:

  • místo znaku "<" napíšeme "&lt" Př.: Datum &lt "1.1.2002"
  • místo znaku ">" napíšeme "&gt" Př.: Datum &gt "1.1.2002"
  • místo znaku "<>" napíšeme "!=" Př.: Datum != "1.1.2002"

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.

 
sql/slozene_sql_dotazy.txt · Poslední úprava: 2006/12/13 16:24 (upraveno mimo DokuWiki)
 
Kromě míst, kde je explicitně uvedeno jinak, je obsah této wiki licencován pod následující licencí:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki