SQL-Query-Verknüpfung

SQL-Query-Verknüpfung

am 17.02.2006 11:57:41 von Hans Friedrich Knoppe

Hallo Newsgroup,

folgendes Problem: ich habe 2 Tabellen

Aus Tabelle tab benötige ich lat_com,fr_id,timesort und aus tab2 nick.
Wie kann man aus beiden Tabellen mittels einer SQL-Abfrage die Daten
sammeln wobei lat_com aus tab mit com aus tab2 übereinstimmen muss und
timesort größer als time()-86400.
Es handelt sich hiebei um die Auflistung der Themen der letzen 24 Stunden.

Dieses SQL-Query liefert jedoch 0 Datensätze.

"SELECT t1.lat_com, t1.fr_id, t1.timesort, t2.nick
FROM tab t1, tab2 t2 WHERE t1.timesort>=".(time()-86400)."
AND t1.lat_com=t2.com ORDER BY t1.timesort";

Gibt es eine andere Möglichkeit, wenn möglich ein SQL-Query?

Re: SQL-Query-Verknüpfung

am 17.02.2006 17:20:15 von Markus Pfefferle

Hans Friedrich Knoppe wrote:
> Dieses SQL-Query liefert jedoch 0 Datensätze.
>
> "SELECT t1.lat_com, t1.fr_id, t1.timesort, t2.nick
> FROM tab t1, tab2 t2 WHERE t1.timesort>=".(time()-86400)."
> AND t1.lat_com=t2.com ORDER BY t1.timesort";

Falsch ist diese Abfrage nicht, aber a) bist du sicher, dass in timesort
auch Unix-Zeitstempel und nicht SQL-DATETIME Daten gespeichert sind, und b)
bist du sicher, dass das Problem nicht an falschen Zeitstempeln liegt?

Lass dir doch mal die fertige Abfrage, also inklusive dem, was für
(time()-86400) ausgegeben wird, ausgeben und siehe nach, ob es in der
Datenbank tatsächlich Spalten gibt, die diesem Kriterium entsprechen.
Möglicherweise lag der Fehler schon beim Schreiben der Einträge.

Re: SQL-Query-Verknüpfung

am 17.02.2006 18:09:48 von Hans Friedrich Knoppe

"Markus Pfefferle"
> Falsch ist diese Abfrage nicht, aber a) bist du sicher, dass in timesort
> auch Unix-Zeitstempel und nicht SQL-DATETIME Daten gespeichert sind, und
> b)
> bist du sicher, dass das Problem nicht an falschen Zeitstempeln liegt?
>
> Lass dir doch mal die fertige Abfrage, also inklusive dem, was für
> (time()-86400) ausgegeben wird, ausgeben und siehe nach, ob es in der
> Datenbank tatsächlich Spalten gibt, die diesem Kriterium entsprechen.
> Möglicherweise lag der Fehler schon beim Schreiben der Einträge.

Hier mal alles im Überblick:

forum_topics: http://img124.imageshack.us/img124/4131/tab17cw.jpg
forum_comments: http://img119.imageshack.us/img119/6721/tab27ax.jpg

Beipieleinträge forum_topics:
http://img465.imageshack.us/img465/5415/tab39oe.jpg
Beipieleinträge forum_comments:
http://img465.imageshack.us/img465/7793/tab42ri.jpg

Hier mal betroffene Einträge: Habe malalles zusammengestellt.

http://img481.imageshack.us/img481/2272/tab53dd.jpg

Re: SQL-Query-Verknüpfung

am 17.02.2006 19:08:54 von Frank Schenk

Hans Friedrich Knoppe wrote:
> "Markus Pfefferle"
>
>>Falsch ist diese Abfrage nicht, aber a) bist du sicher, dass in timesort
>>auch Unix-Zeitstempel und nicht SQL-DATETIME Daten gespeichert sind, und
>>b)
>>bist du sicher, dass das Problem nicht an falschen Zeitstempeln liegt?
>>
>>Lass dir doch mal die fertige Abfrage, also inklusive dem, was für
>>(time()-86400) ausgegeben wird, ausgeben und siehe nach, ob es in der
>>Datenbank tatsächlich Spalten gibt, die diesem Kriterium entsprechen.
>>Möglicherweise lag der Fehler schon beim Schreiben der Einträge.
>
>
> Hier mal alles im Überblick:
>
> forum_topics: http://img124.imageshack.us/img124/4131/tab17cw.jpg
> forum_comments: http://img119.imageshack.us/img119/6721/tab27ax.jpg
>
> Beipieleinträge forum_topics:
> http://img465.imageshack.us/img465/5415/tab39oe.jpg
> Beipieleinträge forum_comments:
> http://img465.imageshack.us/img465/7793/tab42ri.jpg
>
> Hier mal betroffene Einträge: Habe malalles zusammengestellt.
>
> http://img481.imageshack.us/img481/2272/tab53dd.jpg
>
>

Was für Drogen nimmst du denn? Wenn ich mir Bilder ansehen will start
ich die Google Bildersuche. Copy+Paste des Textes reicht.

Welches DBMS verwendest du?

mysql> select time();
ERROR 1064: You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use
near '()' at line 1

Postgresql=# select time();
ERROR: syntax error at or near ")" at character 13

Du stocherst arg im Trüben oder? Zerlege große Queries in kleine Happen
und baue sie nach und nach zusammen, irgendwann wird es nicht mehr
funktionieren und du hast deinen Fehler.


gruß, Frank

Re: SQL-Query-Verknüpfung

am 20.02.2006 10:24:14 von Markus Pfefferle

Frank Schenk wrote:
> Welches DBMS verwendest du?
>
> mysql> select time();
> ERROR 1064: You have an error in your SQL syntax. Check the manual
> that corresponds to your MySQL server version for the right syntax to
> use near '()' at line 1
>
> Postgresql=# select time();
> ERROR: syntax error at or near ")" at character 13

Dir ist vielleicht nicht aufgefallen, dass a) seine time()-Funktion vom
SQL-String durch String-Verknüpfungs-Operatoren getrennt und wir uns b) in
einer PHP-Untergruppe befinden, oder?

Re: SQL-Query-Verknüpfung

am 20.02.2006 10:36:20 von Markus Pfefferle

Hans Friedrich Knoppe wrote:
>> Lass dir doch mal die fertige Abfrage, also inklusive dem, was für
>> (time()-86400) ausgegeben wird, ausgeben und siehe nach, ob es in der
>> Datenbank tatsächlich Spalten gibt, die diesem Kriterium entsprechen.
>> Möglicherweise lag der Fehler schon beim Schreiben der Einträge.
>
> Hier mal alles im Überblick:
>
> forum_topics: http://img124.imageshack.us/img124/4131/tab17cw.jpg
> forum_comments: http://img119.imageshack.us/img119/6721/tab27ax.jpg
>
> Beipieleinträge forum_topics:
> http://img465.imageshack.us/img465/5415/tab39oe.jpg
> Beipieleinträge forum_comments:
> http://img465.imageshack.us/img465/7793/tab42ri.jpg
>
> Hier mal betroffene Einträge: Habe malalles zusammengestellt.

Ist jetzt mal ein schneller Schuss ins Blaue, aber versuch es doch mal mit
normalen Integer-Feldern, also INT(10) und nicht INT(100). Um 100-stellige
Ganzzahlen darzustellen, reicht der Datenbank nichtmal mehr der BIGINT Typ
und daher muss sie wahrscheinlich mit Gleitkommazahlen arbeiten, die in
ungünstigen Fällen solche Kuriositäten erklären könnten.