Geoget SQL

Prosím o radu, potřebuji SQL dotaz do DB geogetu, kde se zeptám na všechny keše kašera (třeba moje) s určitou hodnotou tagu…



SELECT id FROM geolog WHERE finder = 'romantic29' AND type = 'Found it' AND Brdy = 'ANO';


Samozřejmě nefunguje, protože špatně přistupuji k tagu Brdy, nevíte někdo, jak se přistupuje v SQL k jednotlivým tagům? Nikde jsem to tu nenašel, díky…

Takhle nějak vypíšeš keše daného autora a s daným tagem:


select * from geocache join geotag on geocache.id = geotag.id join geotagcategory on geotag.ptrkat = geotagcategory.key join geotagvalue on geotag.ptrvalue = geotagvalue.key where geocache.author = 'romantic29' geotagcategory.value = 'Brdy' and geotagvalue.value = 'ANO'

Nevím, kde to chceš použít, ale nebylo by jednodušší vyhledat keše podle jména autora (CTRL+H) a pak pomocí filtru podle tagů vyhodit, co nevyhovuje?

rek bych ze tam chybi jedno AND mezi nickem a hodnotou tagu, ale jinak hodne pekny, takhle jsem teda do sql jeste neprokouk!

Jo chybělo, díky za upozornění.


select * from geocache join geotag on geocache.id = geotag.id join geotagcategory on geotag.ptrkat = geotagcategory.key join geotagvalue on geotag.ptrvalue = geotagvalue.key where geocache.author = 'romantic29' and geotagcategory.value = 'Brdy' and geotagvalue.value = 'ANO'

Díky všem za pomoc, ale asi jsme se špatně pochopili - potřebuji vypsat všechny odlovené keše jakéhokoliv kešera, které mají tag Brdy s hodnotou ANO. Samozřejmě mám stažené všechny logy u těchto keší. Každopádně ale díky vám tuším, jak ta DB vypadá, nevíte někdo, jak zjistit přesnou strukturu té DB?

PS: Náhodou nevíte jak vypsat všechny založené keše daného autora? geocache.author obsahuje text, který vyplnil autor při zakládání keše, takže v podstatě tam může být cokoliv nebo jinak veliká písmena nebo více kešerů a samozřejmě i starší nick daného autora, jak tohle rozlousknout, abych našel opravdu všechny keše toho autora?

Můžeš použít geocache.gs_ownerid, ale bude trochu komplikované ho zjistit. Ve SmartFiltru předpokládám že autor založil aspoň jednu keš na svůj nick a používám


gcOwnerId := Geoget_DB.GetTableString('SELECT gs_ownerid FROM geocache where author = '''+Geoget_Owner+'''');

PS: "moje keše" se obvykle chápe jako mnou založené :wink:

Strukturu zjistis nejakym prohlizitkem SQLite databaze. Zacit muzes treba s pluginem SQLite manager do FireFoxu. Pouzivam ho bezne.

Nejvíc se mi osvědčil SQLite Expert Personal.

Tak si doplň do dotazu spojení


join geolog on geocache.id = geolog.id 

a rozšiř podmínku where


 geolog.finder = 'xxxx' and (geolog.type = 'Found it' or geolog.type = 'Attended' or geolog.type = 'Webcam Photo Taken')

PS: Všechny založené daného nicku nelze v GeoGetu zjistit na 100%. Záleží dost na tom, jestli jsou data importovaná z Webu nebo z PQ.

na vypsani vsech kesi, co maji nejaky tag, na to ti staci standardni filtr, ne?

Nestačí, tím nevypíši všechny keše libovolného kešera, ale pouze moje, pokud se nemýlím…

??? To preci zalezi na tom, jak si nastavis podminky v tom filtru!

Nepopírám, že to nejde, ale já opravdu nevím, jak nastavit ve filtru podmínku, že chci všechny keše, které má odlovené kačer XY a které mají zároveň tag ZA s hodnotou BC… Jak se to prosím tedy dělá?

problém je, že jsi hned na začátku zaměnil "keše nalezené určitým kačerem" za "keše určitého kačera". :slight_smile: To co chceš ty asi opravdu filtrem nejde

Nj, občas mám problém se přesně vyjadřovat…

V tom aby se cert uz vyznal.

Pokud chces veci, ktere nalezl urcity kacer, tak mas problem. Musel bys mit stazene u vsech kesi vsechny logy…

Takovato uloha se nejlepe resi ve spolupraci s Geojarry, ktery urcite umi stahnout nalezene kese nejakym kacerem, tyto pak otagujes, a pak standardnim filtrem vyhledavat kese, ktere maji ty dva tagy najednou.

(to mi pripomina, ze v tom hledani podle vice tagu je nekde v soucasne verzi chyba…)

OT (neda mi to, vecny problem): To problem neni. Problem je, ze dostanes odpoved na to, na co ses ptal a ne na co ses chtel optat :wink:

Co treba toto:


select geolog.id from geolog 
  join geotag on geolog.id = geotag.id 
    join geotagcategory on geotag.ptrkat = geotagcategory.key 
      join geotagvalue on geotag.ptrvalue = geotagvalue.key
  where geolog.finder = 'romantic29' and geotagcategory.value = 'Brdy' and geotagvalue.value = 'ANO'

Jo, jeste jsem zapomnel otestovat typ logu na found it a spol. To jiste das sam :wink:


and (geolog.type = 'Found it' or geolog.type = 'Attended' or geolog.type = 'Webcam Photo Taken')