externe SQL-Datenquelle in Calc

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

scholler
Beiträge: 8
Registriert: Do, 02.03.2006 07:08

externe SQL-Datenquelle in Calc

Beitrag von scholler »

Hallo,

ich möchte (wie man's von M$-Excel kennt) eine externe SQL-Abfrage einer externen MySQL-DB in Calc 2.0 unter Linux mit JDBC einbinden.

Wie geht das? Ich habe schon reichlich im Internet recherchiert aber nicht den entscheidenden Hinweis gefunden. Folgende Möglichkeiten tun sich auf:

1)
Ansicht Datenquellen. Dort wird u.A. eine von mir erzeugte Base-DB angezeigt die wiederum eine JDBC-Verbindung zu MySQL hat => ich habe also über Base-Umwege Zugriff.
Wie kann ich's ohne Base machen, insbesondere wie kann ich direkt SQL-Abfragen unter Calc angeben, am Besten unter Verwendung zuvor angegebener Parameter-Werte innerhalb von Calc-Zellen?
Außerdem solle ich innerhalb des Datenquellen-Explorers mit Hilfe des Kontextmenüs eine neue Datenquelle (laut Hilfesystem) anlegen können - bei mir gibt's jedoch nur die Möglichkeit "Datenbankdatei bearbeiten" - wieso?

2)
Daten - Datenpiloten - Aufrufen
Für was ist dieser?
Quelle - Externe Quelle/Schnittstelle ist bei mir deaktiviert/grau - wieso?
Hier handelt es sich irgendwie um OLAP-Verbindungsmöglichkeiten?

Meine Anfrage ist doch nichts außergewöhnliches. Ist's wirklich nicht so einfach oder mache ich einen entscheidenden Denkfehler?

Ich bin um jeden Hinweis froh!

Gruß, Alexander
    pmoegenb
    ********
    Beiträge: 4330
    Registriert: Di, 22.06.2004 12:02
    Wohnort: 71134 Aidlingen
    Kontaktdaten:

    Beitrag von pmoegenb »

    Hallo Alexander,

    ich gehe davon aus, dass dies identisch mit der Windows-Version ist. Nun, unter Excel kenne ich keine SQL-Zugriffe (externe schon garnicht), sondern nur mittels MS-Query, die wiederum in Excel eingebunden werden können.

    Ferner gehe ich davon aus, dass Du lediglich eine MySQL-DB als Datenquelle bei Base angemeldet hast.
    • - Klicke diese Datenquelle mit der rechten Maustaste an und wähle als Oprtion Dateibankdatei bearbeiten... aus.
      - Wähle im linken Fenster von Base Abfragen aus.
      - Im Fenster Aufgaben kannst Du nun Abfrage in SQL-Ansicht erstellen... auswählen.
    Der Name der Abfrage erscheint dann unter der Rubrik Abfagen in der Datenquelle-Übersicht.

    Gruß

    Peter
    scholler
    Beiträge: 8
    Registriert: Do, 02.03.2006 07:08

    Beitrag von scholler »

    Hallo Peter,
    pmoegenb hat geschrieben:Hallo Alexander,
    [...] Nun, unter Excel kenne ich keine SQL-Zugriffe (externe schon garnicht), sondern nur mittels MS-Query, die wiederum in Excel eingebunden werden können.
    Ja - Du hast recht.
    pmoegenb hat geschrieben: Ferner gehe ich davon aus, dass Du lediglich eine MySQL-DB als Datenquelle bei Base angemeldet hast.
    • - Klicke diese Datenquelle mit der rechten Maustaste an und wähle als Oprtion Dateibankdatei bearbeiten... aus.
      - Wähle im linken Fenster von Base Abfragen aus.
      - Im Fenster Aufgaben kannst Du nun Abfrage in SQL-Ansicht erstellen... auswählen.
    Der Name der Abfrage erscheint dann unter der Rubrik Abfagen in der Datenquelle-Übersicht.
    Da sind wir am springenden Punkt.
    Ich möchte unter Calc SQL-Abfragen durchführen - Du sprichst nun aber von Base. Anscheinend muss man die SQL-Abfragen in Calc über Base laufen lassen - oder?
    Ich habe unter Base das Problem dass Aggregationen (GROUP BY Funktionxyz(Spalteabc)) anscheinend nur für gewisse Funktionen wie SUM/AVG/etc. zugelassen sind.
    Ich möchte/muss jedoch eine Datumsfunktion von MySQL nutzen.

    Was tun???

    Gruß, Alexander
    pmoegenb
    ********
    Beiträge: 4330
    Registriert: Di, 22.06.2004 12:02
    Wohnort: 71134 Aidlingen
    Kontaktdaten:

    Beitrag von pmoegenb »

    Hallo Alexander,

    was bei Excel, Winword etc. MS-Query ist, ist bei OO Base, nur kann Base wesentlich mehr.

    Base hat eine integrierte Datenbank HSQLDB (http://hsqldb.org/) und dient auch als Frontend für externe DB's.

    Die Abfragen die mit Base erstellt wurden, stehen allen Programmteilen wie Calc, Writer etc. zur Verfügung.

    Wenn Du die Abfrageassistenten benutzt musst Du sicherlich Abstriche an Deinen Anforderungen machen, aber als Direkteingabe von SQL-Befehlen müsste eigentlich der Umfang möglich sein, den die DB zulässt. Nur, wie bereits an anderer Stelle erwähnt, müssen die Bezeichner anders angeführt werden.

    Gruß

    Peter
    scholler
    Beiträge: 8
    Registriert: Do, 02.03.2006 07:08

    Beitrag von scholler »

    Hallo,
    pmoegenb hat geschrieben: Hallo Alexander,

    was bei Excel, Winword etc. MS-Query ist, ist bei OO Base, nur kann Base wesentlich mehr.

    Base hat eine integrierte Datenbank HSQLDB (http://hsqldb.org/) und dient auch als Frontend für externe DB's.

    Die Abfragen die mit Base erstellt wurden, stehen allen Programmteilen wie Calc, Writer etc. zur Verfügung.
    Da habe ich aber ein Verständnisproblem. Abfragen die in Base erstellt wurden werden doch in einer odb-Datei gespeichert - oder?
    Nun verwende ich eine SQL-Abfrage innerhalb Calc, die ich in Base erzeugt habe. Dann kopiere ich die ods-Calc-Datei auf einen anderen Rechner. Funktioniert dann noch die Abfrage, da ja die Base-Datei nicht mehr verfügbar ist?
    pmoegenb hat geschrieben:
    Wenn Du die Abfrageassistenten benutzt musst Du sicherlich Abstriche an Deinen Anforderungen machen, aber als Direkteingabe von SQL-Befehlen müsste eigentlich der Umfang möglich sein, den die DB zulässt. Nur, wie bereits an anderer Stelle erwähnt, müssen die Bezeichner anders angeführt werden.

    Gruß

    Peter
    Ich würde liebend gerne den Abfrageassistenten nicht nutzen, jedoch öffnet sich der ja automatisch beim Bearbeiten einer Abfrage. Man muss dann auf die SQL-Ansicht wechseln und dort wird das SQL-Statement zu allem Überfluss evtl. selbstständig von Base modifiziert.

    Definitiv kann ich unter Base nicht alle SQL-Statements abschicken wie bereit früher von mir geschrieben.

    Probier's selbst aus:

    Code: Alles auswählen

    CREATE TABLE oootest (test` DATETIME NOT NULL);
    insert into oootest values(now()-1);
    insert into oootest values(now());
    select count(*), test from oootest group by test;
    select count(*), dayofyear(test) from oootest group by dayofyear(test);
    Das erste select funktioniert in Base, das zweite nicht mehr, obwohl beide in phpMyAdmin funktionieren. Diese Einschränkung ist für mich leider nicht tragbar! Ist's ein Bug?

    Und noch eine Frage:
    Um obigen Test-Code zu verifizieren habe ich eine test.odb angelegt. Diese Datenquelle ist nun unter Calc verfügbar. Wie kann ich die Datenquelle wieder löschen? Wenn ich die test.odb lösche wird die Datenquelle weiterhin angezeigt, jedoch bei Zugriff auf diese erfolgt die Fehlermeldung dass die Datei nicht existiert. Somit bestätigt sich mein obiges "Verständnisproblem".

    Wo gibt's gute Dokus zur Nutzung der Ooo-Datenquellen?

    Peter, besten Dank auf jeden Fall schon mal für Deine kompetenten bisherigen Hinweise!

    Gruß, Alexander
    pmoegenb
    ********
    Beiträge: 4330
    Registriert: Di, 22.06.2004 12:02
    Wohnort: 71134 Aidlingen
    Kontaktdaten:

    Beitrag von pmoegenb »

    Hallo Alexander,

    aber mit HSQLDB geht z. B. das

    Code: Alles auswählen

    SELECT COUNT(*), DAYOFYEAR("Datum") AS "DatumTag"  FROM "Tabelle1"
    GROUP BY "DatumTag"
    Gruß

    Peter
    scholler
    Beiträge: 8
    Registriert: Do, 02.03.2006 07:08

    Beitrag von scholler »

    Morgen Peter!
    pmoegenb hat geschrieben:Hallo Alexander,

    aber mit HSQLDB geht z. B. das

    Code: Alles auswählen

    SELECT COUNT(*), DAYOFYEAR("Datum") AS "DatumTag"  FROM "Tabelle1"
    GROUP BY "DatumTag"
    Gruß

    Peter
    Danke für Deine Antwort. Hiermit sind nicht all meine Abfragen nun lauffähig, aber doch einige mehr als zuvor.
    Ich wundere mich dass diese Alias-Syntax zulässig, den schließlich wertet ja die DB-Engine das GROUP BY vor dem SELECT aus, somit sollte dem GROUP BY der Alias des SELECTs doch noch garnicht bekannt sein.

    Gruß, Alexander
    scholler
    Beiträge: 8
    Registriert: Do, 02.03.2006 07:08

    SQL-Kommando direkt ausführen...

    Beitrag von scholler »

    ... wenn diese Option innerhalb der SQL-Abfrage-Symbolleiste aktiviert wird scheinen auch komplexe, DB-Backend-Spezifische Abfragen in Base zu funktionieren, da dann wohl der Base-SQL-Parser außen vor gelassen wird.
    Antworten