Flexible Auswertungen in TNG

Alle Fragen zum Programm, die nicht in die unten stehenden Rubriken gehören.
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Flexible Auswertungen in TNG

Beitrag von Thomas »

Hallo,

mit TNG kann man fast beliebige Auswertungen erstellen.
Es gibt im Verwaltungsmenü einen Eintrag "Auswertungen" in dem man sich eine fast beliebig komplexe Abfrage über die TNG-Datenbanktabellen erstellen und speichern kann.
Man muss sich hierbei gar nicht mit SQL auskennen um interessante Auswertungen erstellen zu können.
Per Formular klickt man sich die gewünschten Anzeigeelemente, Auswahlkriterien und die Sortierung zusammen.

Hier ein Beispiel zur Darstellung aller Hochzeiten:

"Wählen Sie die anzuzeigenden Felder:" Name, Heiratsdatum, Heiratsort, Name Ehepartner
"Wähle Auswahlkriterien:" Heiratsdatum > 0 UND Geschlecht = "M"
"Sortierreihenfolge wählen:" Nachname, Heiratsdatum

Nachdem man die Abfrage gespeichert hat, kann man sie prüfen lassen.
Hierbei wird einem der generierte SQL-String und das Ergebnis der Auswertung angezeigt.

Experten können den Code beliebig abändern und als modifizierte Abfrage speichern.

Hier der erzeugte Code für die Datenbankabfrage:

Code: Alles auswählen

SELECT tng_people.living, lnprefix, suffix, tng_people.branch,firstname, lastname,
if(SPAM='M',families1.marrdate,families2.marrdate),
if(SPAM='M',families1.marrplace,families2.marrplace),
(if(SPAM='M',families1.wife,families2.husband)) as spouse, tng_people.personID, tng_people.gedcom, nameorder 
FROM (tng_people ) 
LEFT JOIN tng_families AS families1 
ON (tng_people.gedcom = families1.gedcom AND tng_people.personID = families1.husband ) 
LEFT JOIN tng_families AS families2 
ON (tng_people.gedcom = families2.gedcom AND tng_people.personID = families2.wife ) 
WHERE (if(SPAM='M',families1.marrdate,families2.marrdate) > 0 
AND SPAM = "M") 
AND tng_people.gedcom = "2" 
ORDER BY lastname,if(SPAM='M',families1.marrdate,families2.marrdate)
(Zwecks besserer Lesbarkeit habe ich den Code etwas umformatiert)

Ein unglaublich mächtiges Tool innerhalb von TNG

Gruß
Thomas
Viele Grüße
Thomas
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Noch ein Beispiel:
zeige alle Personen, die im 18. Jahrhundert geboren sind
(konkret zwischen dem 1.1.1700 und dem 31.1.1800):

Code: Alles auswählen

SELECT personID, lastname, firstname, birthdate, birthplace, deathdate, deathplace 
FROM (tng_people ) 
WHERE ( TO_DAYS(birthdatetr) >= TO_DAYS("1701-01-01") ) 
AND ( TO_DAYS(birthdatetr) <= TO_DAYS("1800-12-31") ) 
ORDER BY birthdatetr, lastname, firstname
Viele Grüße
Thomas
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Und noch ein Beispiel.

Zeigt alle Personen, die an Krebs verstorben sind.

Code: Alles auswählen

SELECT tng_people.gedcom, personID, lastname, firstname, eventdate, eventplace, info, tng_events.cause 
FROM tng_people 
LEFT JOIN tng_events 
ON tng_people.personID = tng_events.persfamID 
WHERE tng_events.cause LIKE '%e%'
Viele Grüße
Thomas
Gast

Beitrag von Gast »

Hallo Thomas,
wo baut man diese Möglichkeiten ein?

Manni
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Hallo Manni,

die Auswertungen erstellt man in der Verwaltung unter "Auswertungen".
Angezeigt werden sie z.B. auf der Startseite, wenn man dort den Link "Auswertungen" anklickt.
Man sieht dort dann die Liste der erstellten Auswertungen mit Namen und Bemerkungen und kann dann eine Auswertung anklicken.
Je nach Komplexität der Abfrage dauert die Anzeige einen Moment länger als gewohnt.

Ich werde mir noch einige Auswertungen einfallen lassen, um z.B. fehlende Daten deutlicher zu machen.

Gruß
Thomas
Viele Grüße
Thomas
Benutzeravatar
Ralfwenzel
Mitglied
Beiträge: 74
Registriert: 03.02.2003 20:48
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Ralfwenzel »

Hallo Thomas,

versuche seit einigen Tagen versuchsweise eine Auswertung auf die Beine zu stellen. Klappt leider nicht, da mir die einzelnen Operatoren nicht geläufig sind. ( z.B != )
Außerdem ist mir unklar was bei den Auswahlkriterien _UID:Ort, Datum usw. bedeuten.

Gruß Ralf
Gast

Beitrag von Gast »

Mir geht es genauso.. :roll:

Gruß Manni
Benutzeravatar
Ralfwenzel
Mitglied
Beiträge: 74
Registriert: 03.02.2003 20:48
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Ralfwenzel »

Hallo Manni, dann sind wir schon zu zweit, aber ich vertraue auf Thomas!
Vielleicht kann Thomas hier eine Übersicht einstellen um uns Laien die Benutzung von TNG zu erleichtern.

Dann sollte es uns gelingen ebenfalls Auswertungen zu gestalten!

( Manni, wir sind nicht allein....)

Gruß Ralf
Benutzeravatar
Thomas
Site Admin
Beiträge: 1845
Registriert: 06.05.2002 11:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von Thomas »

Hallo Ralf und Manni,

TNG speichert alle Daten in ein paar sinnvoll gewählten Tabellen ab.
So gibt es Tabellen für die Personendaten, Familiendaten, Orte, etc.
Jede Tabelle enthält Felder, die die einzelnen Informationen speichern können.
Alle Felder, die man in den Auswertungen berücksichtigen kann, sind im Verwaltungsmenü bei dem Auswertungsdialog "Hinzufügen" in der oberen Auflistung aufgeführt.
Man kann hier nun einen Eintrag anklicken und dann den Pfeil nach rechts klicken, um den Eintrag in die rechte Auswahlbox zu übernehmen.
Nach und nach klickt man mit dieser Methode alle gewünschten Einträge für die spätere Auswertung auf die rechte Seite.

Im nächsten Schritt (Wähle Auswahlkriterien) definiert man die Bedingungen, die zutreffen müssen, damit ein Datensatz in der Auswertung später auch angezeigt wird.
Man könnte hier z.B. definieren, dass alle Personen, deren Nachname nicht Müller lautet, angezeigt werden sollen.
Also wählt man für dieses (wenig sinnvolle) Beispiel den Eintrag "Nachname" aus und klickt in auf die rechte Seite.
Dann wählt man aus der nächsten Liste den Operator "!=" aus und bringt es ebenfalls auf die rechte Seite.
Das !-Zeichen (Negierung) in Verbindung mit dem =-Zeichen bedeutet hier soviel wie "ungleich".
Nun müssen wir noch "Müller" angeben. Das machen wir im Eingabefeld "Feste Zeichenfolge", also einfach Müller reinschreiben und Pfeil rechts klicken.
Bei Zahlenwerten wie z.B. Jahreszahlen hätten wir das darunterliegende Eingabefeld "Fester Wert" genommen.

Zum Schluß können wir noch eine Sortierreihenfolge einstellen.
Z.B. können wir hier Namenslisten alphabetisch sortieren oder nach Jahreszahlen sortieren.
Mann kann in gewohnter Manier auch mehrer Eintrage nach rechts übernehmen. Hier wird dann entsprechend der Reihenfolge die Sortierung vorgenommen. Z.B. wenn man Nachname und Geburtsdatum in dieser Reihenfolge angibt, kann man die Ausgabe nach dem Alphabet sortieren und innerhalb der gleichen Nachnamen dann noch nach dem Geburtsdatum.

Zu guter Letzt wird die Auswertung mit dem Button "Auswertung speichern" gesichert und der Auswertungsliste hinzugefügt.
Klickt man in der Übersichtsliste bei einer Auswertung auf "Prüfung", dann kann man das Ergebnis seiner Arbeit betrachten und sieht auch gleich die generierte Datenbankabfrage, so, wie ich weiter oben in diesem Thread einige Beispiele aufgeführt hatte.
Diese Abfragen sehen eventuell etwas kompliziert aus.
Wenn man sich mit der Logik aber erst einmal etwas vertraut gemacht hat, dann können diese Datenbankabfrage sehr interessant für eigene Änderungen sein.
Allerdings kommt man sicher auch ohne diese Abfragen aus, indem man sich seine gewünschte Auswertung eben einfach "zusammenklickt".

Gruß
Thomas
Viele Grüße
Thomas
Gast

Beitrag von Gast »

oh, oh
Auswertung: Test
Beschreibung:

SQL: SELECT tng_people.living, lnprefix, suffix, tng_people.branch,lastname, firstname,birthdate,birthplace,(if(SPAM='M',families1.wife,families2.husband)) as spouse,deathdate,deathplace, tng_people.personID, tng_people.gedcom, nameorder FROM (tng_people ) LEFT JOIN tng_families AS families1 ON (tng_people.gedcom = families1.gedcom AND tng_people.personID = families1.husband ) LEFT JOIN tng_families AS families2 ON (tng_people.gedcom = families2.gedcom AND tng_people.personID = families2.wife ) WHERE (lastname !=) AND tng_people.gedcom = "Test" ORDER BY lastname,birthdate,if(SPAM='M',families1.marrdate,families2.marrdate),deathdate,deathplace,SPAM

Startseite Suche Drucken Abmelden

Fehler: Die Syntax der Suchabfrage für diese Auswertung (ID: 4) ist ungültig, deswegen kann die Auswertung nicht erstellt werden. Benachrichtigen Sie den Systemverantwortlichen mbaeumer@googlemail.com.

Suchabfrage: SELECT tng_people.living, lnprefix, suffix, tng_people.branch,lastname, firstname,birthdate,birthplace,(if(SPAM='M',families1.wife,families2.husband)) as spouse,deathdate,deathplace, tng_people.personID, tng_people.gedcom, nameorder FROM (tng_people ) LEFT JOIN tng_families AS families1 ON (tng_people.gedcom = families1.gedcom AND tng_people.personID = families1.husband ) LEFT JOIN tng_families AS families2 ON (tng_people.gedcom = families2.gedcom AND tng_people.personID = families2.wife ) WHERE (lastname !=) AND tng_people.gedcom = "Test" ORDER BY lastname,birthdate,if(SPAM='M',families1.marrdate,families2.marrdate),deathdate,deathplace,SPAM
Fehlermeldung:
Antworten