Seite 1 von 1

LibreOffice Datenbank base

Verfasst: Sa 26. Nov 2016, 11:09
von Anke Hamann
Hallo,
meine Töchter sollen Abfragen erstellen. Die Lehrerin gibt an, dass sie folgendes als SQL Ansicht eingeben sollen
SELECT
b.verlag
FROM Tbl_buecher b;
Das funktioniert aber bei uns zu Hause nicht. Es funktioniert nur mit Gänsefüsschen. Die Lehrerin behauptet aber es muss
funktionieren. Was machen wir falsch?

Gruß
Anke Hamann

Re: LibreOffice Datenbank base

Verfasst: Sa 26. Nov 2016, 17:30
von RobertG
Hallo Anke,
Anke Hamann hat geschrieben: Das funktioniert aber bei uns zu Hause nicht. Es funktioniert nur mit Gänsefüsschen. Die Lehrerin behauptet aber es muss
funktionieren. Was machen wir falsch?
Na ja, die Lehrerin benutzt vermutlich nicht LibreOffice Base oder AOO Base. Da werden eben die Maskierungen automatisch hinzugefügt. Gib so eine Abfrage unter
Extras > SQL
ein und markiere vorher "Ausgabe der "select"-Aussagen anzeigen".

So eine Abfrage kannst Du auch abspeichern, indem Du bei den Abfragen den Designmodus ausschaltest und anschließend "SQL-Kommando direkt ausführen" wählst. Nur funktioniert dann die Abfrage nicht mehr, da Base die Abfrage unbearbeitet an die interne HSQLDB weiterreicht. Und die interne HSQLDB erwartet diese Anführungszeichen.
Maskierungen mit Anführungsstrichen oben werden z.B. für die interne HSQLDB von Base genutzt. Bei der direkten Ansprache von z.B. MySQL macht Base aus den doppelten Anführungszeichen oben ein `. Die Maskierungen sind Pflicht, wenn Sonderzeichen (auch Leertasten) in den Feldbefehlen vorhanden sind.

Gruß

Robert

Re: LibreOffice Datenbank base

Verfasst: Sa 26. Nov 2016, 18:42
von Anke Hamann
Jetzt hat es geklappt. Die Lehrerin hat zwar gesagt, sie müssen den Button SQL-Kommando direkt ausführen anklicken. Deshalb haben sie es
natürlich hier zu Hause auch gemacht. Wenn ich aber den Befehl jetzt eingebe und gehe gleich auf Abfrage ausführen, dann macht er es mit
b.
Danke für die Hilfe, bis zum nächsten Mal

Re: LibreOffice Datenbank base

Verfasst: Mo 28. Nov 2016, 17:05
von Freischreiber
Hallo,

kann mir jemand diese Abfrage erklären? Ich verstehe schon die Frage nicht...

Code: Alles auswählen

SELECT
b.verlag
FROM Tbl_buecher b;
Was hat es mit dem "b." auf sich und mit dem "b;" nach der Tabellenbezeichnung? Das kenne ich so nicht.

Gruß
Freischreiber

Re: LibreOffice Datenbank base

Verfasst: Mo 28. Nov 2016, 20:45
von RobertG
Hallo Freischreiber,

Code: Alles auswählen

SELECT
b.verlag
FROM Tbl_buecher b;
... ist eine Abfrage, die mit einem Alias für die Tabelle arbeitet, diesen aber nicht mit 'AS' kennzeichnet. Das macht LO inzwischen grundsätzlich nicht mehr, da Oracle mit dem 'AS' als Aliaszuweisung Probleme hat.

Code: Alles auswählen

SELECT b.verlag FROM Tbl_buecher AS b;
zeigt die Aliaszuweisung mit 'AS'

Code: Alles auswählen

SELECT verlag FROM Tbl_buecher
macht hier dasselbe. Der Alias ist unnötig.

Code: Alles auswählen

SELECT "verlag" FROM "Tbl_buecher"
wäre das, was LO in der GUI daraus machen würde. Ist ebenfalls gleichbedeutend.

Ein Alias macht dann Sinn, wenn Du mehrmals auf die gleiche Tabelle, aber mit anderen Vorgaben in einer Abfrage zugreifen willst. Auch für korrelierende Unterabfragen ist so etwas erforderlich. Gerade bei dieser Abfrage ergibt das aber keinen Sinn. Vielleicht ist aber auch die Abfrage so nur auf ein Grundgerüst reduziert. Das müsste dann Anke (bzw. ihre Töchter oder auch die Lehrerin) beantworten können.

Gruß

Robert

Re: LibreOffice Datenbank base

Verfasst: Fr 2. Dez 2016, 15:37
von Freischreiber
Hallo Robert,

vielen Dank für die Erklärung. Daß es Tabellen-Aliasse gibt, war mir gar nicht bewußt...

Gut finde ich die Idee nicht, Wörter wie "as" zu streichen. Sie machen ja eigentlich das L in SQL aus, für Menschen jedenfalls.

Gruß
Freischreiber