Selbsterstellte SQLite Datenbankabfrage Tips !

Moderator: DF5WW

Locked
DF2MC
Advanced Class
Posts: 63
Joined: 20 Sep 2015, 06:55

Selbsterstellte SQLite Datenbankabfrage Tips !

Post by DF2MC »

Einige Tipps und Beispiele zur Selbsterstellung von eigenen individuellen Custom-Suchbefehlen.

Es gibt zwar schon eine ganze Menge vorgefertigter Abfragemöglichkeiten in LO4OM.

Syntax Beispiele und komplexe Abfragekombinationen (Filter)
Die Beispiele sollen nur die verschiedenen Möglichkeiten der Syntax aufzeigen.

Platzhalter % und _ (Unterstrich)

% >Steht für beliebiges Zeichen und beliebige Anzahl (auch dem 0 Zeichen). z.B.: 'JH_ %' steht für JH1ABC, JH6ABC

_ > Steht für genau ein beliebiges Zeichen, z.B.: 'W_4%' steht für WA4ABC, WB4ABC,WN4ABC .........
---------------------------------------------------------------------------------------------------------------------------------------------------
Kombination Operatoren AND & OR

Sie können AND und OR kombinieren, mit Klammern ( ) werden komplexe Ausdrücke gebildet, siehe Beispiele)
----------------------------------------------------------------------------------------------------------------------------------------------------
Beispiel 1: Suchbefehl: log.Country = 'Japan' AND (log.mode = 'JT65' OR log.mode = 'JT9')

Aus der SQL-Datenbank Tabelle (log) wird das Land (Country) ‘Japan‘ und die Betriebsart (mode) ‘JT65‘ ODER ‘JT9‘ ausgewählt.
Dieser Suchbefehl gibt eine Auflistung aller QSO`s mit Japan und den Betriebsarten JT65 - und - JT9 - aus.
----------------------------------------------------------------------------------------------------------------------------------------------------
Beispiel 2: Suchbefehl: log.Country = 'United States' AND (log.mode = 'JT65' OR log.mode = 'JT9') AND (log.call like 'W%')

Mit diesem Suchbefehl werden alle US-stationen im Mode JT65 und JT9 und alle Calls mit Anfangsbuchstaben W im Prefix aufgelistet.
----------------------------------------------------------------------------------------------------------------------------------------------------
Beispiel 3: Suchbefehl: log.Country = 'United States' AND (log.mode = 'PSK31' OR log.mode = 'RTTY') AND (log.State like 'M%')

Auflistung aller US Stationen Mode PSK31 und RTTY in den Staten M...... wie z.B MN MA MO...usw
----------------------------------------------------------------------------------------------------------------------------------------------------
Weiter Beispiele, die bei Search Parameter - Simple - nicht alle funktionieren würden.

Im Feld Comment irgendwelche Einträge:
Eingabe: log.comment like '_%'

Suche leere Felder Im Feld QslRcvd,:
Eingabe: log.QslRcvd = ''

Suche leere Comment Felder z.B bei Country Japan
Eingabe: log.country = 'Japan' and (log.comment = '')

Ausgabe: alle W_4... Stationen:
Eingabe: (log.call like 'W_4%')

Ausgabe: alle W_4.. und K_4.. Stationen
Eingabe: (log.call like 'W_4%' OR log.call like 'K_4%')

Ausgabe: alle Japanischen Stationen mit Prefix JA1... und JH.....
Eingabe: (log.call like 'JA1%' OR log.call like 'JH_%')

Ausgabe: alle W_1... und K_5... Stationen plus EqslQslRcvd Status Y (Yes)
Eingabe: (log.call like 'W_1%' OR log.call like 'K_5%') AND (log.EqslQslRcvd like 'Y')

Ausgabe: alle W_4... und K_4... Stationen plus EqslQslRcvd Status N (No)
Eingabe: (log.call like 'W_4%' OR log.call like 'K_4%') AND (log.EqslQslRcvd like 'N')

Ausgabe: alle W3 und K1 Stationen mit Mode JT65 und EqslQslRcvd Status N (No)
Eingabe: (log.call like 'W_3%' OR log.call like 'K_1%') AND (log.mode like 'JT65') AND (log.EqslQslRcvd like 'N')

Ausgabe: alle W4 und K4 Stationen mit Mode RTTY und EqslQslRcvd Status Y (Yes)
Eingabe: (log.call like 'W_4%' OR log.call like 'K_4%') AND (log.mode like 'RTTY') AND (log.EqslQslRcvd like 'Y')

Ausgabe: alle W_2... und K_3... Stationen mit Mode JT9 und EqslQslRcvd Status Y (Yes)
Eingabe: (log.call like 'W_2%' OR log.call like 'K_3%') AND (log.mode like 'JT9') AND (log.EqslQslRcvd like 'Y')

Die Beispielen zeigen, wie man die Abfrage-Kombinationen (Filter) erweitern oder ändern kann und wo die ( ) notwendig sind.
Am Anfang jeder Syntax-Zeile kann die Klammer ( oder beides (log meist wegelassen werden.

Natürlich können Parameter (Spalten) gelöscht, erweitert oder ausgetauscht werden, wie K_3% z.B zu GB_%, das würde alle GB.... Calls auflisten. Auf genaue schreibweise ist besonders zu achten !!!

Zum Test kann man die Syntax-Beispiele einfach kopieren und in die Custom Leerzeile (Search Parameter) einfügen.

Den genauen von der DB verwendeten Feldnamen (Spaltenname) erfährt man im Simple Modus, mit dem gewünschten Feldnamen ein Kommando erzeugen und von dort den genauen Datenbank Feldnamen übernehmen. Nicht alle Tabellen-Überschriften entsprechen den tatsächlichen Feldnamen in der DB z.B, der Feldnamen - Callsign - entspricht dem realen
Datenbankfeldnamen - Call -, Callsign würde bei der Abfrage nichts ergeben.

Die öffters benutzten Kommandos bei den Search Parameter, kann man mit einem aussagekräftigen Namen in - Save Search name- abspeicher, grünes Plus Zeichen unten Mitte. Ich benütze das Notepad bei der Erstellung und zum Testen der Syntax,
die Befehle einfach vom Notepad kopieren und in Custom einfügen.

Man kann so seine eigenen individuellen Filter erstellen.

Es sieht schwieriger aus als es ist, nun viel Spaß beim probieren mit dem Custom Filter ! !

Wer weitere Ideen, bzw. Korrekturen hat, bitte diese Liste korrigieren bzw. erweitern, ich bin kein Datenbank – Experte :-)
Ob man die Custom Suche nützt oder nicht muß jeder selbst entscheiden, individuelle Möglichkeiten sind dadurch gegeben.

VY 73 und 55 de Hans DF2MC.
Last edited by DF2MC on 08 Nov 2015, 21:32, edited 1 time in total.
HB9BRJ
Old Man
Posts: 173
Joined: 23 Nov 2014, 10:46
Location: Schaffhausen

Re: Selbsterstellte SQLite Datenbankabfrage Tips !

Post by HB9BRJ »

Hallo Hans

Danke für deine Erklärungen. Einen weiteren nützlichen SQL-Befehl möchte ich anfügen:

Dein Beispiel 1 war:
Suchbefehl: log.Country = 'Japan' AND (log.mode = 'JT65' OR log.mode = 'JT9')

einfacher: log.Country = 'Japan' AND log.mode IN('JT65','JT9')

Die Aufzählung in der Klammer darf beliebig lang sein.

73, Markus
DF2MC
Advanced Class
Posts: 63
Joined: 20 Sep 2015, 06:55

Re: Selbsterstellte SQLite Datenbankabfrage Tips !

Post by DF2MC »

Danke Markus,

nur so lernt man dazu, währe schön wenn Du noch weitere Ideen hättest, auch andere als meine Beispiele !!!

Vielleicht kannst Du das mit den in Klammern gesetzten Parametern erklären, warum usw.
Ich weiß das in etwa, aber bin unsicher wie man das erklärt ?

Mit SQLite habe ich mich erst seit kurzem wegen LO4OM befaßt !

VY73 de Hans DF2MC
PB4FUN
Advanced Class
Posts: 78
Joined: 27 Feb 2014, 18:20
Location: JO33KC
Contact:

Re: Selbsterstellte SQLite Datenbankabfrage Tips !

Post by PB4FUN »

beliebig lang ist wie extra parameter hinzufügen, egal wie viele es sind : log.mode IN('JT65','JT9', 'XYZ', 'ABC')
Es ist aber etwas langsamer als mit OR

Dies ist nicht SQlite-spezifisch, aber ist allgemeiner SQL
PB4FUN Meindert; Rig : Icom IC-9100 / Ant: Falcon OUT-250-B @4m AGL; 144 MHz 16 el @ 4m AGL; 70 cm 23 el @ 5 m AGL
DF2MC
Advanced Class
Posts: 63
Joined: 20 Sep 2015, 06:55

Re: Selbsterstellte SQLite Datenbankabfrage Tips !

Post by DF2MC »

Danke für die Info PB4FUN !

73 Hans DF2MC
User avatar
DM7AO
Novice Class
Posts: 7
Joined: 10 May 2016, 19:36
Location: JO50KR

Anleitung Script zu ADIF und select nur gewünschte Daten

Post by DM7AO »

Hier eine Anleitung für die Generierung von ADIF Files für Online Logbücher

Jürgen DF5WW hat mir die Erlaubniss gegeben es hier zu veröffentlichen.
Habe einige Passagen noch angepasst nach meinen Tests.

Zuerst Log4OM starten
2. in der Kopfzeile QSO Manager auswählen und darin QSO Archive
3. In der Fusszeile des neu geöffneten Fensters unten rechts die 5000 QSO auf 0 ändern (nur so werden auch QSO über den 5000 angezeigt)

Nachtrag von mir auch mit eingegrenzten Datum kann man die Suche noch verfeinern
Einfach den Kalender öffnen und den gewünschten Zeitraum setzen.

4. Ebenfalls Fusszeile dieses Fensters "Search Parameters" anklicken und es geht ein zusätzliches kleines Fenster auf.
5. Hier jetzt oben in Simple, Auswahlliste Band wählen und in dem Klappmenü neben dran (not equals) und im einzugebenden Wert 2m eingeben und auf das grüne + drücken
6. das gleiche für 70 cm und evtl. auch noch für 23 cm
7. unten rechts den grünen Haken anklicken und das Fenster geht zu
Nicht vergessen vorher das Scipt zu speichern!
8. Im QSO Archive Fenster "Search" auswählen und alle anderen Verbindungen (Kurzwelle) werden gefunden
9. Unten in der Fusszeile dann "Select all" wählen und in der Kopfzeile den Menüpunkt ADIF


Im folgenden Dialog kannst Du dem ADIF einen Namen geben und einen Speicherort auswählen und es abspeichern, ich nehme immer ADIF 2 Standard. Der reicht für die Onlinelogs aus.

Liest sich zwar jetzt etwas kompliziert ist aber relativ easy und wirkungsvoll .... Wenn Du bspw. auch noch 13 cm oder höher hast könnte man das noch hinzunehmen, ebenso wenn Du 6m Verbindungen hast wobei ich gerade diese immer mit hochlade.

Nur darauf achten das die Schreibweise immer 2m, 70cm, 6m, 23cm sein muss. Also die Ziffern für das Band und m/cm ohne Leerzeichen immer direkt dran und klein geschrieben.

Gruß, DF5WW, Jürgen

Vielen Dank an Jürgen und ich hoffe das es Einsteigern wieder ein wenig geholfen hat das schöne Programm leichter nutzen zu können.

Wünsche eine schöne Vorweihnachtszeit de Jens, DM7AO
73's Jens (Roy), DM7AO Icom IC-756PROIII 2x19,5 mtr. doublet ... GAP TITAN DX 80-10m
User avatar
DF5WW
Log4OM Alpha Team
Posts: 2031
Joined: 02 May 2013, 09:49
Location: Kraam, Rhineland Palatinate, Germany
Contact:

Re: Selbsterstellte SQLite Datenbankabfrage Tips !

Post by DF5WW »

Hallo Jens,

Danke für das Posting. Hilft sicherlich einigen weiter die beim Programm noch nicht so richtig die Möglichkeiten ausloten konnten. Die Software ist schon stark und hat sehr viele Möglichkeiten zur Suche nach bestimmten Vorgaben.

Mal sehen was bei V2 noch besser wird :D :D ;)
73´s .. Juergen ... ALT-512 SDR (10W) , 50 m random wire at SG-211 autotuner, 2 x Xiegu G90 (20W HF TRX) one as portable Radio. Also TS-790E (40 W) for VHF/UHF with X-50 vertical and Duoband 4-Element LPDA.
Locked