Gruppieren und doppelte ausblenden

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

PeterLing
*
Beiträge: 11
Registriert: Do, 02.10.2014 00:53

Gruppieren und doppelte ausblenden

Beitrag von PeterLing »

Hallo, ich mache gerade den Kurs M$ Access 2k10 von brainvideos (alles ein wenig umgeschrieben - will ja keine Werbung machen) und möchte das dort geleherte für BASE umsetzen und Jugendlichen beibringen. (wer rastet - rostet :D)

Jetzt habe ich schon 50 % geschafft :D (siehe meine tollen Abfragen) aber die Aufgaben werden immer schwieriger und die Umsetzung wird auch zunehmend komplexer so dass ich jetzt immer öfter suchen und nachforschen muss. Ist ja generell nicht schlecht - aber halt zeitaufwendig) :(

Folgendes Problem habe ich gerade:

Wenn ihr die Abfrage "25qryPersonen_mit_Kontakten" ausführt, dann bekommt ihr immer doppelte Namen angezeigt. Im Video lösen die die doppelten Einträge wie folgt:

a) er lässt in der Abfrage einfach keine Duplikate zu. Das habe ich versucht mit "Bearbeiten" -> "Abfrageeigenschaften" -> "Eindeutige Werte" "Ja" zu lösen, aber das scheint etwas anderes zu sein.
b) er trägt in der Zeile "Funktion" -- "Gruppierung" ein. Das gibt es so ähnlich bei Base, aber auch das scheint etwas anderes zu sein bzw. bekomme ich da einen SQL Fehler.

Kann mir jemand kurz schreiben, wie das geht?

Also zum Einen die doppelten Namen einfach *Gruppieren*, so dass jeder Name in der Abfrage nur einmal erscheint und zum Anderen mit "Duplikate" nicht erlauben. Das Ergebnis wäre das gleiche meint Herr H im Video. Zur Not genügt mir auch eine Variante. Hehehee

Ich danke schon jetzt für jede Hilfe.
Dateianhänge
copy_10_Fahrrad-Tischtennis-opti.odb
(12.47 KiB) 254-mal heruntergeladen
RobertG
********
Beiträge: 2057
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Gruppieren und doppelte ausblenden

Beitrag von RobertG »

Hallo Peter,

wenn ich mir die besagte Abfrage anschaue, dann hast Du eindeutige Werte. Eindeutig bezieht sich nicht auf ein einziges Datenfeld, sondern auf den gesamten Datensatz. All die Datensätze, die Du nicht anzeigen lassen willst, unterscheiden sich in "konperIDRef".
Willst Du gruppieren, so muss die Datenbank wissen, was mit den verschiedenen anderen Feldern passieren soll. Du gruppierst z.B. nach "perNachname", was passiert dann mit "perVorname", wenn die Kombination eben nicht gleich ist? Vor allem bei "konperIDRef" hast Du dann ein Problem. Hier könntest Du vielleicht Summieren - dann wäre aber die Information weg.
Die eingebaute HSQLDB kennt nicht solche Befehle wie GROUP_CONCAT() oder LIST(), die vielleicht solche Inhalte weiter sichtbar in ein Feld zusammen ziehen. Um das zu erreichen sind ganz andere Klimmzüge notwendig. So etwas habe ich im Handbuch im Kapitel "Datenbankaufgaben" beschrieben.
Schaue ich mir die Abfrage im SQL-Modus an, so sehe ich einen CROSS JOIN. Der führt dazu, dass alle Datensätze einer Tabelle mit allen Datensätzen der anderen Tabelle kombiniert werden. Die Verbindung von Personen und Kontakten ist also beliebig. Ich habe so etwas, soweit ich weiß, noch nie benötigt. Damit kannst Du ganz schnell riesige Datenmengen anzeigen. Zur Zeit eben 12 Personen mit 4 Kontakten kombiniert gibt 48 Datenzeilen. Ein Kontakt mehr und Du hast 60 Datenzeilen.
Welchen Sinn soll die Abfrage haben?

Gruß

Robert
PeterLing
*
Beiträge: 11
Registriert: Do, 02.10.2014 00:53

Re: Gruppieren und doppelte ausblenden

Beitrag von PeterLing »

Hallo Robert,


Danke dir für deine Antwort!

ich habe zwei Bilder angehängt. Der gute Mann versucht die Personen anzeigen zu lassen, die Kontaktangaben in der Datenbank Kontakte haben. Das sieht dann zunächst so aus, wie in Bild2. Nun will er die doppelten ausblenden lassen. Da ja einige Personen *mehrere* Angaben zu Kontakten gemacht haben. Er blendet zum einen die doppelten aus und zum anderen - im zweiten Versuch gruppiert er die Namen einfach. (mit dem gleichen Erfolg - sagt er)

Das Ergebnis ist bei ihm dann wie in Bild1.

Den Cross Join habe ich eingerichtet, weil er das auch gemacht hat - um eben alle Personen anzeigen zu lassen, auch wenn ich nur die Vor und Nachnamen mit der perKonIDRef kombiniere. Es werden ja dann auch die Namen angezeigt, die vorher ausgeblendet wurden, weil diese keinen Eintrag in Kontakten hatten.

Er möchte damit zeigen:

Sobald ich die Abfrage mit Vorname und Nachname kombiniere, bekomme ich alle Vor/Nachnamen in der Datenbank aufgelistet. Wenn ich nun die perKonIDRef hinzufüge, verschwinden alle die Namen, die keine Angaben in den Kontakten haben. Er möchte damit klar machen, dass man aufpassen muss, welche Tabellenfelder man bei Abfragen kombiniert hat, weil sonst Daten nicht angezeigt werden. (was ja logisch ist)

Ich weiß nun auch nicht, ob das so wichtig / Sinnvoll ist. Würde das auch auslassen können, wenn du sagts, dass man das anders machen kann und dann sinnvoller wird.

Danke dir schon jetzt für deine Hilfe.
Dateianhänge
Bild2.jpg
Bild2.jpg (16.09 KiB) 9576 mal betrachtet
Bild1.jpg
Bild1.jpg (12.1 KiB) 9576 mal betrachtet
RobertG
********
Beiträge: 2057
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Gruppieren und doppelte ausblenden

Beitrag von RobertG »

Hallo Peter,

in Deiner Abfrage sind die Personen mit allen Kontakten verbunden. Mache einmal aus der Abfrage 25qry... über "In SQL-Ansicht bearbeiten" die folgende Abfrage:

Code: Alles auswählen

SELECT "tblPersonen"."perNachname", "tblPersonen"."perVorname", "tblPersonen"."perID", COUNT("tblKontakte"."konperIDRef") FROM "tblKontakte" "tblKontakte" CROSS JOIN "tblPersonen" "tblPersonen" GROUP BY "tblPersonen"."perNachname", "tblPersonen"."perVorname", "tblPersonen"."perID"
Dann werden alle Personen nur einmal angezeigt. Da aber alle Personen 4 Kontakte haben, wird die Anzahl der Kontakte mit 4 angegeben.

In dem abgebildeten Beispiel ist hingegen bei der gleichen Person mehrmals die gleiche "konperIDRef" angegeben. Da hättest Du schon mit "SELECT DISTINCT ..." die Personen nur einmal angezeigt bekommen. Nur hättest Du nicht ermitteln können, wie oft Lorenz Hölscher eine "konperIDRef" hat. Das geht dann ebenso mit der Gruppierung aller anderen Werte und der Anzahl der Werte in "konperIDRef".

Gruß

Robert
PeterLing
*
Beiträge: 11
Registriert: Do, 02.10.2014 00:53

Re: Gruppieren und doppelte ausblenden

Beitrag von PeterLing »

Hallo Robert,

deine Lösung funktioniert super. Allerdings übersteigt das nun meinen Horrizont. (ich werde mir Mühe geben) Ich werde nun in mich gehen und *versuchen* zu verstehen, wieso das so geht und warum und ... . Ich bin noch viel zu unwissend.

Ich ziehe meinen Hut vor dir. Ich hoffe nur, dass ich irgendwann nur mal halbwegs soviel knowhow haben werde, wie du es besitzt. Ich habe mir nun zusätzlich das Buch von LibreOffice Base vom lulu.com Shop bestellt. Ich hoffe, dass mich das Buch erhellen wird. (Du hast darin ja auch viel Arbeit investiert?)

Vielleicht bin ich auch schon zu alt. Mal schauen, ob ich das verstehen werde.

Du hast meine nächste Frage mit dem Zählen auch schon beantwortet. Ich bin platt. Aber Leute wie du zeigen mir, dass man das was man weiß, weiter geben muss. Das lässt auch mich weiter machen. Auch wenn ich noch realtiv wenig Ahnung von Base habe. Ich werde mich da durchkämpfen.

Nochmals vielen vielen Dank für deine Hilfe und ich hoffe, dass ich mich wieder melden kann, wenn ich etwas nicht verstehe. Ich werde meine Tabellen weiter hier uploaden. Vielleicht möchte das ja jemand nachvollziehen.

liebe Grüße an alle Open Sourceler und Grüße an alle die, die hier anderen helfen!
RobertG
********
Beiträge: 2057
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Gruppieren und doppelte ausblenden

Beitrag von RobertG »

Hallo Peter,

die Abfrage kannst Du auch über die grafische Benutzeroberfläche so gestalten. Du musst nur bei allen Feldern als Funktion die Gruppierung währen und bei dem Feld, das Du zählen willst, die Funktion "Anzahl".

Das Buch bei lulu.com ist übrigens schon etwas älter (zweite Version des Base-Handbuches, Version LO 4.0). Das Herstellen einer Druckvorlage beansprucht zusätzliche Ressourcen, die in diesem Fall aus der internationalen LO-Liste zur Dokumentation stammten. Mittlerweile ist bei den Downloadseiten auch das Handbuch für die Version 4.3 verfügbar. Ich ergänze hier, teilweise mit Mitarbeit von anderen Leuten, immer wieder Inhalte - entweder weil in den Foren bestimmte Nachfragen kommen oder weil ich merke, dass irgend etwas noch nicht verständlich genug ist.

Das, was ich in dem Handbuch geschrieben habe, ist auch mühsam über Jahre erarbeitet. Ich würde mir da weniger so einen Wust an Abfragen vornehmen, wie Du das gemacht hast, sondern ein konkretes Projekt. Bei den Handbüchern dreht sich alles um die Ausleihe von Medien, weil das das konkrete Projekt war, mit dem ich gestartet bin: Die Schule hatte (noch unter DOS) ein Programm zur Buchausleihe. Dabei handelte es sich um ein für damalige Verhältnisse recht umfangreiches Programm, da die Schulbücherei eventuell an die Stadtbibliothek angeschlossen werden sollte. Daraus wurde dann nichts, es ging auf das Jahr 2000 zu und alle Welt hatte Computerängste sondergleichen. Eine neue Version des Programms sollte her, doch dafür wollte der Hersteller 2000 DM haben. Da habe ich stumpf gesagt: Das können wir selbst, habe die alte Datenbank ausgelesen und damals noch mit StarOffice und dem damit ausgelieferten Datenbankmodul Adabas eine neue Version entwickelt. Mittlerweile ist das Ganze auf MySQL/MariaDB und PHP übertragen - aber das Grundwissen war gelegt.
In der Schule nehme ich als "einfaches" Beispiel immer eine "Rechnungsdatenbank". Waren müssen eingegeben werden, Preise für Waren ebenfalls. Der Verkauf muss geregelt werde, der Ausdruck der Verkaufsbelege ebenfalls - da können sich die SchülerInnen langsam reinsteigern. Und dann kommt noch der (inzwischen recht preisgünstige) Barcodescanner dazu, so dass es im Unterricht teilweise piept wie an den Supermarktkassen.

Gruß

Robert
PeterLing
*
Beiträge: 11
Registriert: Do, 02.10.2014 00:53

Re: Gruppieren und doppelte ausblenden

Beitrag von PeterLing »

Hallo Robert,

in der grafischen Oberfläche tue ich mich momentan schon noch leichter. Die SQL Abfragen stehen aber auch an. Ich habe mir die Datenbank auch direkt wieder angeschaut, nachdem ich die SQL Befehle eingetragen hatte und im Nachhinein denkt man ja immer: Das war ja leicht. (heheheh) Nur wenn man vor dem Problem sthet, sieht es oft anders aus.

Das LO Handbuch hatte ich schon downgeloaded. Ich wollte aber das Handbuch zusätzlich, weil ich das dann den Kollegen zeigen kann. Auch denke ich ist es gut, wenn so ein Buch auch gekauft wird. Man muss so eine Arbeit auch belohnen. Ich danke nochmals für die viele Arbeit die du und deine Mitstreiter in ein solches Projekt investieren. Hut ab. Ich veruche das ja auch ein wenig, aber mein Wissen wird an vielen Ecken von anderen bei weitem überboten.

Du hast recht. Mit den vielen Abfragen würde ich die Schüler erschlagen. Aber Ich sollte es dennoch wissen/können. (sage ich mir halt :D ) Von daher ist das für mich so eine Art Trockenübung um ein Gefühl für das ganze zu bekommen.

Die Beispieldatenbank zum Base Buch habe ich mir auch schon runtergeladen. Da habe ich etwas gesehn von einer "Ausleihe". Ist das die Datenbank über die Bücherei? Das wäre natürlich Klasse. Auch eine Rechnungsdatenbank wäre natürlich super. Ist das vielleicht die auf deiner Webseite?? Habe diese gerade runtergeladen. Werde ich mir auch die nächsten Tage einmal ansehen. Ich muss mir da ja jetzt dann auch erst einmal ein Stundenkonzepot erstellen, wie ich da genau weiter vorgehen will. Momentan bin ich aber noch selber am Üben. Von daher sitze ich zur Zeit jeden Abend bin spät in die Nacht vor meinen Abfragen. Dann werde ich mir die Formulare und dann die Berichte anschauen.

Mit einem Barcodescanner arbeiten wäre natürlich auch cool. Aber jetzt muss ich erst mal locker bleiben und einen Schritt vor den anderen setzen.

Danke dir nochmals sackrisch für die vielen guten Tips - die Rechnungsdatenbank (sofern dies deine Seite ist -> http://robert.familiegrosskopf.de/index ... _beispiele ) und die Unterstützung mit Material. Falls ich etwas hier helfen kann, lass es mich wissen!!!
RobertG
********
Beiträge: 2057
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Gruppieren und doppelte ausblenden

Beitrag von RobertG »

Hallo Peter,

die Rechnungsdatenbanken liegen in dem Päckchen auf genau der Seite, die Du rausgesucht hast. Da ist auch eine kurze Beschreibung dabei.

Barcodescanner kosten keine 50,- €. Nachdem ich einen erst einmal privat gekauft habe haben wir gleich 5 Stück für die Schule angeschafft. Da so ein Ding über USB eingesteckt werden kann und keine Treiber benötigt läuft das Ganze einwandfrei.

Die Bibliotheksausleihe an unserer (und ein paar anderen) Schule(n) läuft nicht mit Base. Mit Base habe ich erst später angefangen. MyPHPlib wird mit MySQL oder MariaDB über einen Webserver und mit PHP betrieben. Das hat den Vorteil, dass gleichzeitig mehrere Personen auf die Datenbank zugreifen können, sofern sie nur einen Webbrowser auf ihren Rechner haben. Base ist in der Grundkonfiguration ja zuerst einmal auf die interne HSQLDB-Datenbank ausgerichtet. Und das bedeutet eine Bedienung durch eine Person.

Die Beispieldatenbank zum Handbuch ist allerdings eine abgespeckte Fassung der Datenbank, die wir nutzen. Ebenso mit Ausleihe. Aber eben nur für einen einzelnen Rechner ausgelegt.

Gruß

Robert
PeterLing
*
Beiträge: 11
Registriert: Do, 02.10.2014 00:53

Re: Gruppieren und doppelte ausblenden

Beitrag von PeterLing »

Hallo Robert,

ich werde mich nun mal weiter durchbeißen und meinen Chef mal bei Gelegenheit wegen einem solchen Barcodescanner anhauen. Das macht die ganze Sache mit einer Datenbank wirklich ein wenig authentischer.

In meinem "brainvideo" Kurs bin ich nun auf die nächsten Probleme gestoßen. Folgende Dinge werden da erklärt, die ich so in Base gar nicht finden kann:

Tabellenerstellungsabfrage
Ich ziehe per Drag and Drop Tabellen und dazugehörige Abfragen in eine neue Tabelle? (das funktioniert auch ^^) Nur ob das das Gleiche ist heheheh

Anfügeabfrage
->
1. gehe in Base ins register tabellen
2. linke maustaste gedrückt halten und dabei
3. table 2 greifen und auf table1 ziehen
4. im Dialog table1 eintragen, daten anhängen wählen...
ODER
INSERT INTO "Table1"("Firstname","Lastname","Status") SELECT "Vorname","Nachname",'neu' FROM "Table2"

Löschabfrage
http://peer.st/dw/doku.php?id=libreoffi ... schabfrage

Aktualisierungsabfrage
http://peer.st/dw/doku.php?id=libreoffi ... ngsabfrage

Im Handbuchg konnte ich dazu nichts finden. Aber unter dem Links. Ob das was bringt oder hilfreich ist, kann ich momentan noch gar nicht bewerten. Das wirst du viel besser wissen.

Beste Grüße
RobertG
********
Beiträge: 2057
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Gruppieren und doppelte ausblenden

Beitrag von RobertG »

Hallo Peter,

wir müssen aufpassen, dass der Thread nicht völlig zerfasert.

Bei den Tabellen im Handbuch steht etwas zum Import von Daten, allerdings über die Zwischenablage. Das geht natürlich genauso mit drag and drop. Ich habe das nur für Tabellen von Calc heraus nach Base beschrieben. Natürlich müsste so etwas auch innerhalb von Base klappen, nur erschließt sich mir der Sinn nicht. Ich erstelle doch nicht zwei Tabellen mit identischen Feldinhalten. Ich importiere wohl Inhalte, die ich von anderen Leuten bekomme. Und die sind eben nicht in einer Base-Tabelle enthalten. Das Format, das ich nutze, ist hier meist *.csv. Und beim Import hänge ich dann die Daten direkt an.

Natürlich kann ich so über den Assistenten auch aus Abfragen Tabellen erstellen. Nur frage ich mich auch hier: Die Abfrage bezieht sich auf die Datenbank, in der ich die Inhalte bereits liegen habe. Warum sollte ich da aus der Abfrage heraus eine Tabelle erstellen. Das riecht nach einer unnötigen Verdoppelung von Daten. Deswegen noch einmal der Rat: Nimm Dir ein konkretes Beispiel vor. Stelle dazu Tabellen zusammen. Dann weißt Du eher, was sinnvoll ist und was nicht. Wie willst Du sonst anderen gegenüber begründen können, was Du da machst?

Gruß

Robert
PeterLing
*
Beiträge: 11
Registriert: Do, 02.10.2014 00:53

[GELÖST] Re: Gruppieren und doppelte ausblenden

Beitrag von PeterLing »

Hallo Robert,
RobertG hat geschrieben:wir müssen aufpassen, dass der Thread nicht völlig zerfasert.
Du hast recht - hatte ich kurz vergessen.

Ich warte nun einfach mal auf das Handbuch und werde mich dann mal mit diesem befassen. Vielleicht lösen sich dann die "Probleme/Fragen" von selbst.

Danke nochmals für deinen Support und beste Grüße
Antworten