Přejít na obsah


Fotka

SQL jak vyfiltrovat jen keše s nálezy


  • Pokud chcete vložit odpověď, přihlašte se
8 odpovědí na toto téma

#1 Kreten8

Kreten8

    Advanced Member

  • Members
  • PipPipPip
  • 1 753 příspěvků(y)

Publikováno 02 leden 2019 - 21:20

Zkouším si teď napsat jeden dotaz, který chci jen pro nalezené kešky, ale dtfound IS NOT NULL nefunguje, to zobrazí všechny keše a dtfound > '' mi naopak nezobrazí nic. Jak tedy správně napsat tu podmínku?


  • 0

#2 VasaM

VasaM

    VasaM

  • Members
  • PipPipPip
  • 855 příspěvků(y)

Publikováno 02 leden 2019 - 21:28

Když se podíváš na strukturu databáze, tak zjistíš, že dtfound je integer s výchozí hodnotou 0. Takže dotaz by měl vypadat třeba takto:

select * from geocache where dtfound > 0;

  • 0
Mapy pro přístroje Garmin: http://www.garmin.vasam.cz (GitHub)

#3 Kreten8

Kreten8

    Advanced Member

  • Members
  • PipPipPip
  • 1 753 příspěvků(y)

Publikováno 02 leden 2019 - 21:46

Díky.


  • 0

#4 tarmara

tarmara

    Air-cooled

  • Members
  • PipPipPip
  • 969 příspěvků(y)

Publikováno 03 leden 2019 - 11:09

NULL je obecně "nedefinovaná hodnota" a na aplikační úrovni se s ní velmi špatně pracuje. Musí se na ni myslet v podmínkách, protože obvykle takové podmínky resultují nikoli do TRUE nebo FALSE ale do NULL. Proto je více než žádoucí používat výchozí hodnoty - například u celočíselných hodnot nulu  a u řetězců prázdný řetězec (protože i prázdný řetězec z informatického hlediska má definovanou hodnotu) - https://cs.wikipedia...í_databáze,_SQL


  • 1

#5 Kreten8

Kreten8

    Advanced Member

  • Members
  • PipPipPip
  • 1 753 příspěvků(y)

Publikováno 03 leden 2019 - 17:32

No to datum je bohužel prázdné, proto jsem zkoušel to NULL a prázdný řetězec, netuším jaké hodnoty může nabývat prázdný typ integer (v dokumentaci bohužel ty typy polí chybí), když se podívám do té tabulky, tak tam tu nulu jako výchozí hodnotu nevidím - vidím "nic"


  • 0

#6 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14 508 příspěvků(y)

Publikováno 03 leden 2019 - 18:17

Neni to nahodou z historickeho duvodu jeste text s hodnotou prazdneho retezce?


  • 0

#7 Kreten8

Kreten8

    Advanced Member

  • Members
  • PipPipPip
  • 1 753 příspěvků(y)

Publikováno 03 leden 2019 - 19:40

No když se do databáze vloupu pomocí SQLite Administratoru, tak mi to umožňuje zjistit strukturu tabulky vytvořením CREATE dotazu a tam vidím : dtfound INTEGER DEFAULT "0", ale u kešek, kde nemám nastavený nález nevidím tu nulu, ale "nic" jak už jsem psal výše a kdyby to byl ten text, tak by mi zafungovalo to dtfound > ''

Tento příspěvek byl upraven od Kreten8: 03 leden 2019 - 19:41

  • 0

#8 tarmara

tarmara

    Air-cooled

  • Members
  • PipPipPip
  • 969 příspěvků(y)

Publikováno 04 leden 2019 - 10:30

I nedalo mi to a stahnul jsem si SQLite Administrator. Sám používám SQLite Studio, které je stále vyvíjené a podporuje i poslední sqlite features a má víc možností. A pokud pominu, že Administrator je deset let starý SW, tak v něm vidím v geocache.dtfound i geocache.dtfoundtime u nenalezených keší 0 (nulu). Ve sloupci geocache.comment je vidět rozdíl v "zobrazení" NULL. Administrator má i evidentní problémy s češtinou (geocache.state). Nemáš nějakou starší verzi GG nebo GGdb??

 

Přiložené miniatury

  • NULL.jpg

  • 0

#9 gord

gord

    Advanced Member

  • Members
  • PipPipPip
  • 10 107 příspěvků(y)

Publikováno 04 leden 2019 - 12:17

Pouzivam SQLite Expert Personal a rozvnez vidim v dtfound i dtfoundtime 0 a spravnou cestinou. Je pravda, ze driv byly casy jako text a ne integer, ale to neni uz dlouha leta, prot neni mozne pouzivat dtfound=''. Ja pouzivam vsude dtfound>0 a to funguje naprosto spolehlive.


  • 0

MHD/PID vybranych mest CR jako POI (diskuse)
GeoGet:
- Combine - automatizace opakovanych cinnosti (diskuse, dávky)

Stator - statistiky y GeoGetu (diskuse)

- Spoiler - uložení spoilerů do GPS jako POI (diskuse)

- Náhrada GJ legálními postupy

 





0 uživatel(ů) prochází toto téma

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

Reklama