Select in Select in SQL
droom
- datenbank
Hi folks,
ich benutze MySQL 4.0.21-standard und versuche folgende Syntax:
SELECT distinct t.pid, slog.tstamp,(SELECT MAX( tstamp ) FROM sys_log WHERE event_pid = t.pid AND tablename = 'tt_content' )date, t.name FROM tt_content AS t, sys_log as slog WHERE slog.recuid=t.uid AND slog.tablename='tt_content' AND t.hidden=0
aber ich kriegen den Fehler:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds ...
Der Fehler kommt nur wenn ich diesen SELECT in den anderen SELECT einbaue. Kann man es anders machen oder warum bekomme ich diesen fehler?
Probier es mal mit:
SELECT distinct t.pid, slog.tstamp,
(SELECT MAX( slog2.tstamp ) FROM sys_log AS slog2,tt_content AS t2 WHERE slog2.event_pid = t2.pid AND slog2.tablename = 'tt_content' )date,
t.name FROM tt_content AS t, sys_log as slog WHERE slog.recuid=t.uid AND slog.tablename='tt_content' AND t.hidden=0
Wobei die Frage ist ... was ist (SELECTERGEBNIS)date ? Weil das Selectergebnis scheint ja ein Timestamp zu sein... Fehlt da ein Komma? Was macht ein Timestamp in einer SELECT Abfrage? Oder überseh ich da was?
Hi,
Probier es mal mit:
Das wird bei der von ihm verwendeten mySql-Version nichts bringen.
Wobei die Frage ist ... was ist (SELECTERGEBNIS)date ?
Das ist ein alias. Es ist das gleiche wenn da stehen würde "(SELECTERGEBNIS) as date".
Weil das Selectergebnis scheint ja ein Timestamp zu sein... Fehlt da ein Komma?
Nein, wenndann ein Leerzeichen zur besseren Übersicht.
Was macht ein Timestamp in einer SELECT Abfrage?
tstamp ist der Name der Spalte, die ausgelesen werden soll. Ich sehe nichts, was dagegen spricht.
mfG,
steckl
Vielen dank alle für eure Hilfe. Ich denke, ich komme mit den Links so weiter. ;-)
droom
Hi,
ich benutze MySQL 4.0.21-standard und versuche folgende Syntax:
warum bekomme ich diesen fehler?
Weil mySql Subselects erst ab Version 4.1 unterstützt.
Wie du das gewünschte Ergebnis erziehlen kannst kann ich dir leider nicht sagen.
Ich vermute es wird ein kompliziertes Query mit JOIN, GROUP BY und HAVING.
mfG,
steckl
Hi,
ich benutze MySQL 4.0.21-standard und versuche folgende Syntax:
SELECT distinct t.pid, slog.tstamp,(SELECT MAX( tstamp ) FROM ...
Also eine Subquery.
Der Fehler kommt nur wenn ich diesen SELECT in den anderen SELECT einbaue. Kann man es anders machen oder warum bekomme ich diesen fehler?
http://dev.mysql.com/doc/refman/4.1/en/subqueries.html:
Starting with MySQL 4.1, all subquery forms and operations that the SQL standard requires are supported, as well as a few features that are MySQL-specific.
With MySQL versions prior to 4.1, it was necessary to work around or avoid the use of subqueries. In many cases, subqueries can successfully be rewritten using joins and other methods. See Section 12.2.8.11, “Rewriting Subqueries as Joins for Earlier MySQL Versions”.
MfG ChrisB
Hallo
ich benutze MySQL 4.0.21-standard und versuche folgende Syntax:
SELECT distinct t.pid, slog.tstamp,(SELECT MAX( tstamp ) FROM sys_log WHERE event_pid = t.pid AND tablename = 'tt_content' )date, t.name FROM tt_content AS t, sys_log as slog WHERE slog.recuid=t.uid AND slog.tablename='tt_content' AND t.hidden=0
Der Fehler kommt nur wenn ich diesen SELECT in den anderen SELECT einbaue. Kann man es anders machen oder warum bekomme ich diesen fehler?
Weil diese nicht mehr unterstützte Uraltversion von MySQL herzlich wenig kann, insbesondere keine Subqueries. Du hast ja schon Links dazu bekommen.
Mein Tipp:
- Informiere Dich über alles, was es beim Update auf eine vernünftige Version
(aktuelle 5.0.x) zu beachten gibt.
- Stelle auf einem Testrechner mit den Originaldaten sicher, dass Du ein
Update durchführen kannst.
- Aktualisiere alle Anwendungen, so dass sie mit der aktuellen Version von
MySQL zurecht kommen (auf dem Testsystem)
- Führe ein Backup aller Datenbanken durch
- Führe das Update des DBMS durch bzw. lasse es durchführen
- Führe ein Update Deiner Anwendungen durch
- Teste Deine Anwendungen im Produktivbetrieb und behebe die letzten
Problemchen.
- Falls Dein Provider dazu nicht bereit ist, wechsle den Provider
Viel Spass
Vinzenz
echo $begrüßung;
- Informiere Dich über alles, was es beim Update auf eine vernünftige Version
(aktuelle 5.0.x) zu beachten gibt.
Insbesondere die nun vorhandene Fähigkeit MySQLs mit diversen Kodierungen umzugehen, und dass dieses Thema berücksichtigt werden muss, um keinen Zeichenverlust zu erleiden, wird gern übersehen. Oftmals setzt das voraus, dass man sich überhaupt erstmal Gedanken machen muss, wie denn ein Computer Zeichen verarbeitet.
echo "$verabschiedung $name";