Abfragen gestalten... HILFE

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfragen gestalten... HILFE

Re: Abfragen gestalten... HILFE

von RobertG » So, 04.11.2012 18:26

Noch einmal zur Ergänzung:
Ich habe jetzt mit LO 3.3.4, LO 3.5.7, LO 3.6.3 und OOo 3.3.0 versucht, Abfragen über den Assistenten zu erstellen. Der Assistent hat deutlich einen Bug. Das Ding kann so niemand richtig ausprobiert haben. Sobald mehr als eine Tabelle betroffen ist gibt der Assistent nur alle möglichen Verknüpfungen wieder - nicht aber die, die durch die Tabellenbeziehungen vorgeschrieben sind. Beziehungen der Tabellen zueinander werden völlig ignoriert. Es gibt, wenn ich das richtig sehe, auch keine Möglichkeit im Assistenten, um diesen Fehler zu beheben.
Wer mit dem Assistenten versucht, mehr als eine Tabelle abzufragen, kann sich also über die Ergebnisse nur wundern.
Ich werde das dann wieder als Bug aufgeben - meine aktuell offene Liste an Bugs in Base beläuft sich allerdings jetzt schon auf 38 ...

→ ist geschehen: https://bugs.freedesktop.org/show_bug.cgi?id=56750 - ich habe das direkt auf "New" gesetzt, da es für mich als Bug durch laxibe bestätigt wird.

Gruß

Robert

Re: Abfragen gestalten... HILFE

von RobertG » So, 04.11.2012 17:35

Hallo laxibe,
laxibe hat geschrieben: Hmm ich habs über den Assistenten versucht...
Jetzt Sag mir noch mal wie genau du das gemacht hast? Das wäre super!
Mit den Assistenten arbeite ich (mit Ausnahme des Assistenten für Formulare) auch mit SchülerInnen überhaupt nicht - ich bin Lehrer und erstelle u.a. mit SchülerInnen im 8. Jahrgang Datenbanken.
Mein Normalweg:
Abfragen → Abfrage in der Entwurfsansicht erstellen
Tabellen auswählen (erscheinen verknüpft in der oben zu sehenden Tabellenübersicht)
Im unteren Teil der Entwurfsansicht die Felder auswählen
... danach war die Abfrage fertig.
Das ganze habe ich entsprechend auch im Base-Handbuch beschrieben, auf das Jürgen hingewiesen hat. Lade es Dir einfach runter, da sind auch die entsprechenden Abbildungen dabei. Du kannst auch einzelne Kapitel herunterladen sowie Beispieldatenbanken: http://de.libreoffice.org/hilfe-kontakt/handbuecher/ - dort etwas nach unten scrollen.
Ich werde jetzt natürlich noch einmal die Assistenten durchprobieren. Wenn da direkt so merkwürdige Abfragen zustande kommen, dann sind die Dinger für mehr als eine Tabelle gar nicht brauchbar. Ich melde mich danach noch einmal.

Gruß

Robert

Re: Abfragen gestalten... HILFE

von laxibe » So, 04.11.2012 10:04

Hallo Robert,
DANKE!!
Genauso war es gedacht :)
Hmm ich habs über den Assistenten versucht...
Jetzt Sag mir noch mal wie genau du das gemacht hast? Das wäre super!
LG laxibe

PS: @Jürgen ich habe mir grade "SQL für Dummies" bei Amazon bestellt. Vielleicht werde ich ja daraus schlauer.

Re: Abfragen gestalten... HILFE

von juetho » Sa, 03.11.2012 17:27

Außerdem lautet eine Regel: Mehrere Spalten, die ausgegeben werden sollen, müssen mit Komma verknüpft werden; nach der letzten Spalte vor FROM muss das Komma entfallen. In einem früheren Versuch stand direkt vor FROM ein Komma (darauf hatte Robert hingewiesen). Jetzt fehlen hinter zwei Spalten die Kommata.

Tipp zur Lektüre: Das Base-Handbuch zeigt ab Seite 136, wie Abfragen erstellt werden können. Die SQL-Einführung nennt die Grundstruktur eines SELECT-Befehls. (Auf die Gänsefüßchen könntest du auch verzichten; das wäre übersichtlicher. Das geht allerdings nur bei einfachen Feld- und Tabellennamen.)
Jürgen

Re: Abfragen gestalten... HILFE

von RobertG » Sa, 03.11.2012 17:12

Hallo laxibe,
laxibe hat geschrieben:

Code: Alles auswählen

SELECT "besucht"."Verspätungen", 
"besucht"."SchülerID",
"besucht"."KursID"
"besucht"."Fehlzeiten", 
"besucht"."Punkte",
"Schüler"."SchülerID"
"Schüler"."Name", 
"Schüler"."Vorname",
"Kurs"."KursID",
"Kurs"."Kursname"
FROM "Schüler",
"besucht"
WHERE "besucht"."SchülerID" = "Schüler"."SchülerID"
"besucht"."KursID" = "Kurs"."KursID"
Bereits beschriebener Fehler.
Anhang kommt gleich.
Die Tabelle "Kurs" ist nicht nach FROM aufgeführt.

Was mir auffällt: Die Beziehungen sind richtig unter Extras → Beziehungen definiert. Die Beziehungen werden beim Abfrageeditor auch eindeutig angezeigt. Wie erstellst Du die Abfrage eigentlich? Versuchst Du etwas mit dem Assistenten zusammen zu bauen oder gehst Du über "Abfrage in der Entwurfsansicht erstellen"?

Gruß

Robert
Dateianhänge
Info wichtig..odb
Einfach nur zusammengeklickt ...
(7.89 KiB) 61-mal heruntergeladen

Re: Abfragen gestalten... HILFE

von laxibe » Sa, 03.11.2012 17:01

Anhang = Datenbank in roh
Dateianhänge
Info wichtig..odb
(7.7 KiB) 59-mal heruntergeladen

Re: Abfragen gestalten... HILFE

von laxibe » Sa, 03.11.2012 17:00

Code: Alles auswählen

SELECT "besucht"."Verspätungen", 
"besucht"."SchülerID",
"besucht"."KursID"
"besucht"."Fehlzeiten", 
"besucht"."Punkte",
"Schüler"."SchülerID"
"Schüler"."Name", 
"Schüler"."Vorname",
"Kurs"."KursID",
"Kurs"."Kursname"
FROM "Schüler",
"besucht"
WHERE "besucht"."SchülerID" = "Schüler"."SchülerID"
"besucht"."KursID" = "Kurs"."KursID"
Bereits beschriebener Fehler.
Anhang kommt gleich.

Re: Abfragen gestalten... HILFE

von RobertG » Sa, 03.11.2012 16:55

Hallo laxibe,

Die Schülerbezeichnungen und Kurse bekommst Du jetzt sicher auch noch in die Sache rein, wenn Du weiter dran bleibst:

Code: Alles auswählen

SELECT "besucht"."Verspätungen", 
"besucht"."Fehlzeiten",
"besucht"."Punkte",
"Schüler"."Name",
"Schüler"."Vorname",
"Kurse"."Kursname"
FROM "Schüler", "besucht", "Kurse"
WHERE "Schüler"."SchülerID" = "besucht"."SchülerID"
AND "Kurse"."KursID" = "besucht"."KursID"
Damit kannst Du dann den Bericht füttern.

Gruß

Robert

Re: Abfragen gestalten... HILFE

von RobertG » Sa, 03.11.2012 16:51

Hallo laxibe,
laxibe hat geschrieben:

Code: Alles auswählen

SELECT "besucht"."Verspätungen" AS "Verspätungen",  
"besucht"."Fehlzeiten" AS "Fehlzeiten", 
"besucht"."Punkte" AS "Punkte", 
"Schüler"."Name" AS "Name", 
"Schüler"."Vorname" AS "Vorname",
FROM "Schüler",
"besucht"
Plötzlich bekam ich den Fehler:
Syntax error in SQL expression
Was ist den nun los?!
Der Fehler liegt in dem Komma vor der Nennung der Tabellen.
Der zweite, von mir bereits vermutete Fehler liegt darin, dass die Tabellen so in keiner Beziehung zueinander stehen.

Code: Alles auswählen

SELECT "besucht"."Verspätungen",  
"besucht"."Fehlzeiten", 
"besucht"."Punkte", 
"Schüler"."Name", 
"Schüler"."Vorname"
FROM "Schüler",
"besucht"
WHERE "Schüler"."SchülerID" = "besucht"."SchülerID"
Die ganzen Aliasbezeichnungen mit "AS" kannst Du übrigens weglassen, wenn Du keine gleichlautenden Felder hast und die Felder nicht umbenennen willst.
Kleiner Hinweis Zur Grundlage

Code: Alles auswählen

SELECT "Feldbezeichnung" FROM "Tabelle"
... einfachste Form

Code: Alles auswählen

SELECT "Tabelle1"."Feld1", "Tabelle2"."Feld2" FROM "Tabelle1", "Tabelle2" WHERE "Tabelle1"."ID" = "Tabelle2"."FremdID"
... Grundform, wenn 2 Tabellen miteinander verknüpft werden - sonst werden alle Datensätze aus Tabelle 1 mit allen Datensätzen aus Tabelle 2 kombiniert.

Gruß

Robert

Re: Abfragen gestalten... HILFE

von laxibe » Sa, 03.11.2012 16:46

Hallo Robert
Danke erstmal für deine Antwort, aber genau da liegt ja das Problem: In Bericht bzw. Abfrage wird SchülerID oder KursID nur als Zahl und nicht als entsprechend anderes Feld angezeigt!
Wie lad ich das denn nun hier hoch?

Re: Abfragen gestalten... HILFE

von RobertG » Sa, 03.11.2012 16:42

Hallo laxibe
laxibe hat geschrieben: besucht: SchülerID(Primärschlüssel), KursID(Primärschlüssel), Verspätungen, Fehlzeiten, Punkte.
Ich möchte jetzt eine Abfrage erstellen, in der jeweils ein Schüler mit dem jeweiligen Kurs mit jeweiligen Fehlzeiten, Verspätungen und Noten zu sehen ist.
Du brauchst doch nur diese eine Tabelle. Die anderen geben doch nur die Informationen über die Namen usw. ab. Und wenn ich die Tabelle richtig betrachte, dann erfordert das doch eigentlich erst einmal keine Abfrage, denn die Tabelle "besucht" hat ja einen doppelten Primärschlüssel, bestehend aus SchülerID und KursID. Es darf also gar kein doppelter Datensatz (gleicher Schüler und Kurs) vorkommen. Also müssen die Fehlzeiten schon aufaddiert sein, ebenso die Verspätungen. Die Punkte stehen auch im gleichen Datensatz.
Wenn Du jetzt noch den Namen des Schülers sichtbar machen möchtest, dann musst Du nur die Tabelle "Schüler" und die Tabelle "besucht" gleichzeitig in die Abfrage laden - die ihr ja noch mit der grafischen Benutzeroberfläche erstellt.
Diese Abfrage sieht direkt vor, dass eine Verbindung der Tabelle aus den Beziehungen der Tabellen gelesen wird. Ist diese Verbindung nicht da, so musst Du sie mit der Maus in der grafischen Abfrage erstellen. Gleichlautende Felder sind dort also zu verbinden.
Ohne diese Beziehung zwischen den Tabellen (die eigentlich direkt nach der Erstellung der Tabellen gemacht wird) wird jeder Datensatz der einen Tabelle mit jedem Datensatz der anderen verbunden, macht z.B. bei je 5 Datensätze in 2 Tabellen 25 mögliche Ergebnisse ...

Lade doch einfach einmal den Rohentwurf Deiner Datenbank hoch - dann können wir Stückchen für Stückchen klären, wo die Probleme begraben sind.

Gruß

Robert

Re: Abfragen gestalten... HILFE

von laxibe » Sa, 03.11.2012 16:35

Jetzt habe ich das hier eingegeben und wollte speichern:

Code: Alles auswählen

SELECT "besucht"."Verspätungen" AS "Verspätungen",  
"besucht"."Fehlzeiten" AS "Fehlzeiten", 
"besucht"."Punkte" AS "Punkte", 
"Schüler"."Name" AS "Name", 
"Schüler"."Vorname" AS "Vorname",
FROM "Schüler",
"besucht"
Plötzlich bekam ich den Fehler:
Syntax error in SQL expression
Was ist den nun los?!

Re: Abfragen gestalten... HILFE

von juetho » Sa, 03.11.2012 12:39

laxibe hat geschrieben:jeder Schüler hat einen Kurs und jeder Kurs n Schüler ----> 1:n Beziehung
jeder Lehrer unterrichtet n Kurse, und jeder Kurs hat einen Lehrer ---> 1:n Beziehung.
Aha, das sind also die Fremdschlüssel-Beziehungen (ForeignKey). Jetzt müsste ich nur wissen, wie die im Assistenten angezeigt werden. (Aber das brauchst du mir nicht zu erklären; wenn das nötig ist, finde ich es im Base-Handbuch.)
Wir arbeiten nicht mit der SQL-Ansicht, das kommt später im Schuljahr.
Abfrage unter Verwendung eines Assistenten erstellen
Ach je. Das mag zwar für Einsteiger und bloße Anwender hilfreich sein, trägt aber so gut wie nichts zum Verständnis bei. IMHO ist es also gerade zum Lernen ziemlich ungeeignet. (Aber wer weiß, welche Lernziele in eurem Lehrplan oder von der Schule und dem Lehrer angestrebt werden; also brauchen wir darüber nicht zu diskutieren, sondern müssen es hinnehmen.)
Unter WHERE-Klausel kann ich mir etwas vorstellen, aber wo kann ich die finden/erstellen??
Auf der Base-Hauptseite Abfragen wählen, dann die betreffende Abfrage anklicken und mit dem Menü-Befehl Bearbeiten oder mit Rechtsklick "in SQL-Ansicht bearbeiten". Dann sinnvoll formatieren (das macht der Assistent leider nicht):
  • hinter jedem Komma eine neue Zeile beginnen
  • vor FROM, WHERE, ORDER BY ebenfalls eine neue Zeile beginnen
  • jede Zeile mit den ausgewählten Spalten einrücken, sodass sie untereinander beginnen und die Begriffe FROM, WHERE, ORDER BY sofort zu sehen sind
Dann den gesamten Quelltext hierher kopieren und einfügen sowie als Code kennzeichnen (zuerst markieren, dann den obigen Button drücken). Dann sehen wir alle (du und Helfer) den SQL-Befehl einschließlich Verknüpfung der Tabellen.
laxibe hat geschrieben:
juetho hat geschrieben:Der Vollständigkeit halber:
  • Benutzt ihr die eingebettete HSQLDB ...
  • Arbeitet ihr mit JOIN? ...
Ich habe keine Ahnung wovon du sprichst. Ich bin ein vollkommener Computer-Programmier/Datenbank/IT-Laie.
LG laxibe
Nach dem, was du hier erklärst, können wir davon ausgehen, dass es sich um eine HSQL-DB handelt, und werden das bei den SQL-Befehlen beachten. Auch JOIN sollten wir besser nicht verwenden.

Ich habe jetzt testweise eine Abfrage mit dem Assistenten erstellt. Es scheint so, dass dort keine Eingabe möglich ist dafür, wie die Verknüpfung zwischen den Tabellen lauten soll. Das geht über die Entwurfsansicht (oder die SQL-Ansicht). Meine erste Vermutung scheint sich zu bestätigen: Es fehlen WHERE-Bedingungen, wie die gewünschten Datensätze zu verknüpfen sind. Aber auf konkrete Lösungshinweise warte ich erst einmal, bis ich hier deine Versuche sehe. Jürgen

Re: Abfragen gestalten... HILFE

von laxibe » Sa, 03.11.2012 11:27

jeder Schüler hat einen Kurs und jeder Kurs n Schüler ----> 1:n Beziehung
jeder Lehrer unterrichtet n Kurse, und jeder Kurs hat einen Lehrer ---> 1:n Beziehung.
Wir arbeiten nicht mit der SQL-Ansicht, das kommt später im Schuljahr.
Abfrage unter Verwendung eines Assistenten erstellen
-> Schüler.Name Schüler.Vorname Kurs.Kursname besucht.Verspätung besucht.Fehlzeiten besucht.Punkte
sind die ausgewählten Felder. Habs auch schon unter Einbeziehung der Primärschlüssel versucht.
Unter WHERE-Klausel kann ich mir etwas vorstellen, aber wo kann ich die finden/erstellen??
Der Vollständigkeit halber:
  • Benutzt ihr die eingebettete HSQLDB oder eine eigenständige Datenbank (z.B. MySQL)? Je nachdem kann sich die SQL-Syntax unterscheiden.
  • Arbeitet ihr mit JOIN? (Das macht Abfragen übersichtlicher, kommt aber erst etwas später. Siehe dazu eine Einführung in SQL.)
Ich habe keine Ahnung wovon du sprichst. Ich bin ein vollkommener Computer-Programmier/Datenbank/IT-Laie.
LG laxibe

Re: Abfragen gestalten... HILFE

von juetho » Sa, 03.11.2012 10:14

Hallo,
laxibe hat geschrieben:... außerdem noch je ein Kurs mit x Schüler (1 Schüler zu 1 Kurs), ein Lehrer zu einem Kurs.
Diesen Teilsatz verstehe ich überhaupt nicht. Ist das eine weitere Tabelle, oder bezieht sich das auf einen ForeignKey?
Ich möchte jetzt eine Abfrage erstellen, in der jeweils ein Schüler mit dem jeweiligen Kurs mit jeweiligen Fehlzeiten, Verspätungen und Noten zu sehen ist.
Offensichtlich hast du schon etwas probiert. Dann schreibe doch deinen Versuch hin (bitte als Code formatieren); dann können wir Schreib- und Denkfehler leichter nachvollziehen.
oder alles wird allem zugeordnet und Schüler sind gefühlte 1000-Mal zu sehen.
Das deutet auf das Kreuzprodukt hin und wird üblicherweise durch eine falsche oder fehlende WHERE-Klausel hervorgerufen.

Der Vollständigkeit halber:
  • Benutzt ihr die eingebettete HSQLDB oder eine eigenständige Datenbank (z.B. MySQL)? Je nachdem kann sich die SQL-Syntax unterscheiden.
  • Arbeitet ihr mit JOIN? (Das macht Abfragen übersichtlicher, kommt aber erst etwas später. Siehe dazu eine Einführung in SQL.)
Gruß Jürgen

Nach oben