Dobrý den všem...
Potřebuju poradit s tvorbou databáze v OpenOffice.org Base. (verze 3.1, používám na Linuxu) S tímto programovým balíkem pomalu začínám, přecházím z MS Office. Jsem tedy naprostý začátečník – to předesílám. :-)
Mám databázi filmů, které mám koupeny, cca 350 filmů. Tu mám zatím v MS Access a převádím ji do Base. Podařilo se mi převést tabulku, nadefinoval a upravil jsem si zadávací formulář, základ funguje, prakticky jde používat – jen ji potřebuju „dokrupičkovat".
O co mi tedy jde?
1.Mám tabulku s názvem „film".
2.V této tabulce je mimo jiné sloupec „CS_titulky", který obsahuje pole typu BOOLEAN (YES/NO) – v zadávacím formuláři databáze je to zaškrtávací políčko
3.Potřebuju napsat dotaz (příkaz), který by mi zobrazil v jiném textovém poli (prohlížecí formulář) podmínku ve smyslu, že pokud je políčko zaškrtnuto uvede se např.: „české titulky", v opačném případě bude uvedeno např.: „bez českých titulků". (ono to pak bude složitější, bude tam další příkaz SQL --> spojení s dalším polem „další titulky", ale to až později.)
4.Myslel jsem si, že by tento základní SQL příkaz měl znít:
SELECT IF ("CS_titulky"=1, 'české titulky', 'bez českých titulků') FROM "film"
(Podle různých nápověd, co jsem našel na NETu by to mělo být v pořádku...)
5.Ale tomu tak není, SQL mi hlásí chybu:
Stav SQL: 37000
Kód chyby: -11
Unexpected token: IF in statement [SELECT IF( "CS_titulky" = 1, 'české titulky', 'bez českých titulků' ) FROM "film"]
A je jedno, jestli zadám "CS_titulky" = 1 nebo "CS_titulky" TRUE nebo "CS_titulky" = TRUE...
6.Přičemž v Base mi SQL v dotazech a tabulkách funguje. Mám vyzkoušeno a ve formuláři nebo sestavě nebo v dotazech používám např. příkazy:
a)SELECT CONCAT( "jazyk", CONCAT( ', ', "dalsi_jazyk" ) ) FROM "film"
(spojí dvě textová pole do jednoho a mezi slova přidá čárku)
b)SELECT COUNT (*) FROM "film"
(vrátí počet záznamů v databázi)
c)SELECT "CS_titulky" FROM "film" WHERE "CS_titulky"=1
SELECT "CS_titulky" FROM "film" WHERE "CS_titulky"=TRUE
(oba příkazy vrátí pouze řádky se zaškrtnutou hodnotou – TRUE)
Tak nevím... Vypadá to, jakoby ten příkaz IF neexistoval... Můžete mne nějak „nakopnout", kterým směrem jít? Doufám, že jsem napsal srozumitelně, o co mi jde. Ještě podotýkám, že opravdu začínám a s SQL nemám zatím žádné zkušenosti...
V konečné fázi budu potřebovat napsat dotaz, který porovnává asi 21 polí typu BOOLEAN. Ale to až v případě, pokud se mi podaří nadefinovat ten jednoduchý... :-)
V MS Access je to příkaz:
=(IIf([drama]=TRUE;' drama,';'')+IIf([art]=TRUE;' art,';'')+IIf([rodinny]=TRUE;' rodinný,';'')+IIf([pohadka]=TRUE;' pohádka,';'')+IIf([krimi]=TRUE;' krimi,';'')+IIf([thriller]=TRUE;' thriller,';'')+IIf([valecny]=TRUE;' válečný,';'')+IIf([horor]=TRUE;' horor,';'')+IIf([komedie]=TRUE;' komedie,';'')+IIf([kresleny]=TRUE;' kreslený,';'')+IIf([spionazni]=TRUE;' špionážní,';'')+IIf([akcni]=TRUE;' akční,';'')+IIf([historicky]=TRUE;' historický,';'')+IIf([scifi]=TRUE;' sci-fi,';'')+IIf([dokument]=TRUE;' dokument,';'')+IIf([hudebni]=TRUE;' hudební,';'')+IIf([dobrodruzny]=TRUE;' dobrodružný,';'')+IIf([western]=TRUE;' western,';'')+IIf([romanticky]=TRUE;' romatický,';'')+IIf([fantasy]=TRUE;' fantasy,';'')+IIf([politicky]=TRUE;' politický,';''))
Dík za jakékoliv rady... Jirka. (P.S. Omlouvám se za délku příspěvku...)