GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skript:stator:modules:stator-sqlexample

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
user:skript:stator:modules:stator-sqlexample [2015/12/05 16:28] – [První keše nalezené v každém státu] kiregpsuser:skript:stator:modules:stator-sqlexample [2020/10/28 12:04] (current) – opravy překlepů mikrom
Line 1: Line 1:
-{{ :user:skript:stator:logo_ararat_2.png?nolink&250|}}+[[user:skript:stator|{{ :user:skript:stator:logo_ararat_2.png?nolink&250|}}]]
  
 ====== Modul SQLTable - příklady SQL dotazů ====== ====== Modul SQLTable - příklady SQL dotazů ======
Line 5: Line 5:
 Protože modul je docela komplikovaný a jeho možnosti opravdu široké, ukážeme jeho možnosti na několika příkladech. Protože modul je docela komplikovaný a jeho možnosti opravdu široké, ukážeme jeho možnosti na několika příkladech.
  
-===== Vylovenost pražských městských částí =====+<WRAP important>Délka SQL dotazu je<sup>do verze 1.3.2.11 včetně</sup> omezena na cca 4000 znaků. Ve formuláři je její překročení signalizováno podbarvením textu se SQL dotazem.</WRAP>
  
 +===== Vylovenost pražských městských částí =====
 Na příkladu ukážeme: Na příkladu ukážeme:
   * relativně přehledný zápis složitějšího SQL dotazu, včetně možného komentáře   * relativně přehledný zápis složitějšího SQL dotazu, včetně možného komentáře
Line 21: Line 22:
  
 === Postup a vysvětlivky === === Postup a vysvětlivky ===
- 
 Napřed mezi použité moduly zařadíme modul ''SQLTable'' a spustíme úpravu parametrů modulu. Pro nás je nejdůležitější parametr ''SQL''. Ten totiž bude obsahovat vlastně všechny informace potřebné pro výběr dat (což je pochopitelné a očekávané), ale také **informace pro vytvoření tabulky**. Napřed mezi použité moduly zařadíme modul ''SQLTable'' a spustíme úpravu parametrů modulu. Pro nás je nejdůležitější parametr ''SQL''. Ten totiž bude obsahovat vlastně všechny informace potřebné pro výběr dat (což je pochopitelné a očekávané), ale také **informace pro vytvoření tabulky**.
  
Line 59: Line 59:
 a přesně takto může být zapsán jako parametr SQL. a přesně takto může být zapsán jako parametr SQL.
  
-Hlavni SELECT používá 2 tabulky A a B, které vzniknou jako vnořený SELECT. Tabulka A obsahuje pro každou městskou část počet všech keší, které může uživatel najít. Jde o keše, které nejsou archivované nebo sice archivované jsou, ale už je našel. Tabulka B pak obsahuje jen pocet nalezených keší.+Hlavni SELECT používá 2 tabulky A a B, které vzniknou jako vnořený SELECT. Tabulka A obsahuje pro každou městskou část počet všech keší, které může uživatel najít. Jde o keše, které nejsou archivované nebo sice archivované jsou, ale už je našel. Tabulka B pak obsahuje jen počet nalezených keší.
  
 Nás ale zajímá hlavně 1. řádek. Nás ale zajímá hlavně 1. řádek.
  
   * první sloupec je pojmenován ''Count''. Při tvorbě tabulky bude toto jméno sloupce nahrazeno podle souboru Common\ColumnNames_CS.ini na správné české pojmenování   * první sloupec je pojmenován ''Count''. Při tvorbě tabulky bude toto jméno sloupce nahrazeno podle souboru Common\ColumnNames_CS.ini na správné české pojmenování
-  * druhý sloupec je pojmenován ''%=Right''. To už je zajímavější. To, co je před znakem ''='' je skutečné jméno sloupce a bude na něj aplikován postup z prvního sloupce. Protože takto pojmenovaný sloupec v souboru neexistuje, ponese tabulka v zahlaví sloupce text ''%''. Jen poznamenám, že stejného jména by se dosáhlo pojmenovanám sloupce ''Percent''+  * druhý sloupec je pojmenován ''%=Right''. To už je zajímavější. To, co je před znakem ''='' je skutečné jméno sloupce a bude na něj aplikován postup z prvního sloupce. Protože takto pojmenovaný sloupec v souboru neexistuje, ponese tabulka v záhlaví sloupce text ''%''. Jen poznamenám, že stejného jména by se dosáhlo pojmenováním sloupce ''Percent''
   * text za znakem ''='' pak udává formátovací parametr ''Right'', hodnoty budou tedy zarovnány vpravo   * text za znakem ''='' pak udává formátovací parametr ''Right'', hodnoty budou tedy zarovnány vpravo
   * třetí sloupec se jmenuje ''Histogram explicit'' a to znamená, že bude zobrazen jako histogram. Hodnoty uvedené v tomto sloupci jsou procentuální velikostí sloupce histogramu   * třetí sloupec se jmenuje ''Histogram explicit'' a to znamená, že bude zobrazen jako histogram. Hodnoty uvedené v tomto sloupci jsou procentuální velikostí sloupce histogramu
   * čtvrtý sloupec nese jméno ''Name'' a bude s ním zacházeno stejně jako se sloupcem prvním   * čtvrtý sloupec nese jméno ''Name'' a bude s ním zacházeno stejně jako se sloupcem prvním
  
-Ł 
 ===== První keše nalezené v každém státu ===== ===== První keše nalezené v každém státu =====
- 
 Další příklad vezmeme již rychleji. Chceme tabulku seřazenou podle data (a času) nálezu, vždy jen jednu kešku z každého státu. Další příklad vezmeme již rychleji. Chceme tabulku seřazenou podle data (a času) nálezu, vždy jen jednu kešku z každého státu.
  
Line 100: Line 98:
   * pro řazení použít položku ''LogID'' z tabulky ''geolog'' nebo   * pro řazení použít položku ''LogID'' z tabulky ''geolog'' nebo
   * použit tabulku ''temp.Stator'', která již má keše seřazené podle toho, jak má uživatel nastaveno v konfiguraci   * použit tabulku ''temp.Stator'', která již má keše seřazené podle toho, jak má uživatel nastaveno v konfiguraci
 +
 +===== Keše nad 1000 m.n.m souhrnná tabulka =====
 +Příklad pro ty kteří rádi lezou po horách - souhrnná tabulka která zobrazí kolik keší nad 1000 m.n.m jste v kterém státě ulovili, procento na stát, nejvyšší odlov a průměr dosažených výšek
 +<code SQL>
 +SELECT 
 +  gc.[country] AS 'Country flag', 
 +  gc.[country] AS 'Country', 
 +  COUNT(gc.[id]) AS 'hi_count=Center',
 +  (COUNT(gc.[id])*100.00)/(SELECT COUNT(*)
 +    FROM geocache igc
 +    INNER JOIN geotag igt ON igt.[id] = igc.[id]
 +    INNER JOIN geotagcategory igtc ON igtc.[value] IN ("Elevation") AND igtc.[key] = igt.[ptrkat]
 +    INNER JOIN geotagvalue igtv ON igt.[ptrvalue] = igtv.[key]
 +    WHERE igc.[dtfound] > 0 and CAST(igtv.[value] AS INT) > 999
 +   ) AS 'hi_proc=Center',
 +  MAX(CAST(gtv.[value] AS INT)) AS 'hi_max=Center',
 +  SUM(CAST(gtv.[value] AS INT))/COUNT(gc.[id]) AS 'hi_prum=Center'
 +FROM geocache gc
 +INNER JOIN geotag gt ON gt.[id] = gc.[id]
 +INNER JOIN geotagcategory gtc ON gtc.[value] IN ("Elevation") AND gtc.[key] = gt.[ptrkat]
 +INNER JOIN geotagvalue gtv ON gt.[ptrvalue] = gtv.[key]
 +WHERE gc.[dtfound] > 0 and CAST(gtv.[value] AS INT) > 999
 +GROUP BY gc.[country]
 +ORDER BY COUNT(gc.[id]) DESC
 +</code>
 +Pojmenování sloupců je potřeba doplnit do ColumnNames.ini ve vašem profilu\\
 +**hi_count=Počet keší\\
 +hi_proc=%\\
 +hi_max=Nejvýše m.n.m.\\
 +hi_prum=Průměr m.n.m.\\
 +**
 +\\
 +Řazení je podle počtu keší ve státech\\
 +Ukázka na mém [[http://www.drakmrak.cz/doku.php?id=gstat|profilu]] na záložce TOP tabulky
  
 ===== Dokumentace modulů Statoru ===== ===== Dokumentace modulů Statoru =====
user/skript/stator/modules/stator-sqlexample.1449329321.txt.gz · Last modified: 2015/12/05 00:00 (external edit)