Seite 1 von 1

Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 19:53
von Mr.Bobo
Hallo zusammen,
ich arbeite zwar schon länger mit OpenOffice.org aber so richtig erst vor kurzem. Mich interessiert eine Frage und zwar: warum werden im Base SQL/MySQL bei Abfragen in den Anweisungen die Atributen bzw. Tabelennamen in Apostrophen eingeschlossen? Zum Beispiel:

SELECT `tblvname`.`VName` AS `Vorname`, `tblnname`.`NName` AS `Nachname`, `tblemail`.`eMail` AS `e-Mail`, `tblvorwahl`.`VNummer` AS `Vorwahl`, `tbltelefon`.`TNummer` AS `Telefonnummer` FROM ( ( `tblemail` INNER JOIN `tblnname` ON `tblemail`.`nnameID` = `tblnname`.`nnameID` ) INNER JOIN `tblvname` ON `tblemail`.`vnameID` = `tblvname`.`vnameID` ) INNER JOIN ( `tbltelefon` INNER JOIN `tblvorwahl` ON `tbltelefon`.`vorwahlID` = `tblvorwahl`.`vorwahlID` ) ON `tblvname`.`vnameID` = `tbltelefon`.`vnameID`;

SQL/MySQL sieht bzw. schreibt es eigentlich nicht vor! Hat es irgend einen Grund und kann man das evtl. auf irgend eine Art ändern? Mich stört es zwar nicht aber wenn ich einen etwas größeren Script von Hand schreiben soll kann ich es mir vorstellen, dass ich irgend wann auf die Tastatur kotze :shock: .

Wenn ich es ganz normal nach dem SQL/MySQL Syntax eingebe, gibt mir OpenOffice.org die Fehlermeldung "Syntax ist falsch!".

Wenn jemand eine Idee hat oder auch die kleinsten Tipps, bedanke ich mich, tiefst geneigt, schon im voraus!

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 20:29
von Barlee
Hallo Mr. Bobo.

die Apostrophe kann man im Normalfall weglassen. Die Abfrage wird dann ohne Probleme ausgeführt.
Der von Dir beschriebene Syntaxfehler ist mit großer Wahrscheinlichkeit nicht auf die (komplett) fehlenden Hochkommas zurückzuführen.
Wenn ich es ganz normal nach dem SQL/MySQL Syntax eingebe
Hast Du ein Beispiel?

Gruß Barlee

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 20:50
von Mr.Bobo
Hallo Barlee,

die Abfrage aus meinem oberen Eintarg schlage ich auch als Beispiel vor. Ich habe eben noch mal versuch eine Abfrage zu erstellen mit dem gleichen Script aber ohne Hochkommas (eigentlich sind das Apostrophen):

SELECT DISTINCT tblvname.VName AS Vorname, tblnname.NName AS Nachname, tblemail.eMail AS e-Mail, tblvorwahl.VNummer AS Vorwahl, tbltelefon.TNummer AS Telefonnummer
FROM
(
(
tblemail INNER JOIN tblnname
ON tblemail.nnameID = tblnname.nnameID
)
INNER JOIN tblvname
ON tblemail.vnameID = tblvname.vnameID
)
INNER JOIN
(
tbltelefon INNER JOIN tblvorwahl
ON tbltelefon.vorwahlID = tblvorwahl.vorwahlID
)
ON tblvname.vnameID = tbltelefon.vnameID;


und habe den Fehler: "Syntax error SQL expersion" erhlaten. Unter Zusätzen steht dann:

SQL-Status: HY000
Fehler-Code: 1000

syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE

Ich habe keine Ahnung was ich falsch gemahct habe aber wenn ich den gleichen Script nehme und die Tabellen und Atribute in Apostrophen einschließe dann geht es ohne Fehler! Vielleicht muss ich noch dazusagen, dass es eine MySQL Datenbank ist die über ODBC im OpenOffice.org angebunden ist.

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 21:46
von Mr.Bobo
... so, einen Fehler in meinem Script habe ich jetzt doch noch gefunden! Erstmal habe ich die Alias (AS...) weggelassen und schon kommt die Fehlermeldung nicht! Nach dem die Reienfolge der INNER JOIN korrigiert wurde kann ich auch die Abfrage öffnen und diese wird auch korrekt angezeigt. Ist das nicht toll?

Aber das Problem bzw. die Frage mit dem Syntax besteht weiter :( :( :( , ich kann mein Script unter "Abfrage unter SQL-Ansicht erstellen" eingeben und abspeichern aber beim nächsten Öffnen der Abfrage über "In SQL-Ansicht bearbeiten" sieht es wieder so beschissen aus. Vor lauten Strichen wird's ganz bunt in den Augen... :lol: :lol: :lol:

Vielleicht hat jemand eine Idee wie man das abstellen kann. Es sieht einfach nicht schön und unübersichtlich aus.

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 21:52
von Barlee
Hallo Mr. Bobo,
eigentlich sind das Apostrophen
OK ;-)

Schön, dass es jetzt funktioniert und Du den Fehler gefunden hast.
Ich hatte leider im Moment keine Möglichkeit, diese Konstellation unter mySQL nachzubauen und zu probieren.

Dass immer Apostrophe beim Speichern der Abfrage gesetzt werden ist schon komisch. Ich suche da auch noch nach einer Möglichkeit, das zu beeinflussen. Vielleicht kennt hier hier noch einer einen Tip...

Gruß Barlee

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 22:03
von Mr.Bobo
Hallo Barlee, hallo alle zusammen,

ich glaube ich habe auch das Problem der Syntax gefunden. Wenn man eine Abfrage über die SQL-Ansicht bearbeitet bzw. erstellt sollte man einfach den Punkt "Bearbeiten --> SQL-Kommando direkt ausführen" einfach aktivieren und schon behält OpenOffice.org bzw. überschreibt nicht den Standard Syntax und auch die versetzte Struktur eines Scripts wir beibehalten! So einfach! :lol: :lol: :lol:

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Di, 18.12.2007 23:15
von Barlee
Hallo Mr. Bobo,

DANKE für die Info. Ist das Problem für mySQL also gelöst.

Bei Benutzung der internen DB kann man diese Option allerdings nur bei einigen Anweisungen (z.B. UNION) aktivieren, ansonsten wird die Benutzung mit einem Fehler quittiert. Vielleicht gibt es ja auch hierfür noch eine Lösung ...

Gruß Barlee

Re: Syntax bei SQL/MySQL Anweisungen

Verfasst: Mi, 19.12.2007 08:32
von Mr.Bobo
Hallo Barlee,

da habe ich was in der Hilfe gefunden:
SQL-Modus
SQL steht für "Structured Query Language" und beschreibt Anweisungen, um relationale Datenbanken abzufragen, zu aktualisieren und zu verwalten.
Da OpenOffice.org nicht die Eingabe des SQL-Codes verlangt, können Sie die meisten Abfragen auch ohne SQL-Kenntnisse durchführen. Während Sie eine Abfrage im Abfrageentwurf erstellen, setzt OpenOffice.org Ihre Anweisungen automatisch in die entsprechende SQL-Syntax um. Wenn Sie mit der Schaltfläche Design-Ansicht an-, ausschalten in die SQL-Ansicht wechseln, sehen Sie die SQL-Befehle einer zuvor erstellten Abfrage.
Sie können Ihre Abfrage direkt im SQL-Code formulieren. Dabei ist jedoch zu beachten, dass die spezielle Syntax von Ihrem verwendeten Datenbanksystem abhängt.
Wenn Sie den SQL-Code von Hand eingeben, können Sie SQL-spezifische Abfragen anlegen, die nicht von der grafischen Oberfläche im Abfrageentwurf unterstützt werden. Diese Abfragen müssen im Native-SQL-Modus ausgeführt werden.
Indem Sie auf das Symbol SQL-Kommando direkt ausführen in der SQL-Ansicht klicken, haben Sie die Möglichkeit, eine Abfrage zu formulieren, die nicht von OpenOffice.org verarbeitet wird.
Im Native-SQL-Modus haben Sie die Möglichkeit, SQL-Befehle einzugeben, die nicht von OpenOffice.org interpretiert, sondern direkt an die Datenquelle übergeben werden. Wenn Sie diese Änderungen nicht in der Design-Ansicht anzeigen, kann nicht mehr in die Design-Ansicht zurückgeschaltet werden.
Bei einem Native SQL wird der SQL-String direkt an das angeschlossene Datenbank-System weitergegeben, ohne vorher vom OpenOffice.org ausgewertet zu werden. Greifen Sie beispielsweise per ODBC-Schnittstelle auf eine Datenbank zu, dann wird der SQL-String an den ODBC-Treiber übergeben und von diesem verarbeitet.
Klicken Sie erneut auf das Symbol, um wieder auf den Normalmodus zurückzuschalten, in dem die Änderungen im Abfrageentwurf mit den erlaubten Änderungen per SQL synchronisiert sind.

Das erklärt jetzt warum Base mein Script immer wieder verändert hat. Schön das es Hilfe gibt! :lol: :lol: :lol: