IF bei INSERT INTO

IF bei INSERT INTO

am 25.01.2006 22:17:06 von AP

Folgendes Problem:

die benutzer meine rseite sollen die neuen einträge seit ihrem letztem
besuch sehen, dazu können sie die "refresh time" selber einstellen,
dann wird ein neuer eintrag erstellt, ab dem weiter gezählt wird.
btw. das ganze isn extra table und läuft nicht im user table mit weil
daraus eine benutzerstatistik errechnet wird.

meine idee bis jetzt :


INSERT INTO
buam_log_login
IF(
DATE_ADD($row_lastlogin[log_datetime], INTERVAL " .
$row_userid[user_refreshtime] . " MINUTE) < NOW(),
(
user_id,
log_datetime,
log_ip
) VALUES (
'$row_userid[user_id]',
NOW(),
'$_SERVER[REMOTE_ADDR]'),)"

leider gibt die doku nur beispiele für SELECT statements
das system
IF(bedingung,wahr,falsch)
müsste hier ja auch funktionieren ?

gruß
AP

Re: IF bei INSERT INTO

am 26.01.2006 07:30:03 von Joachim Zobel

On Wed, 25 Jan 2006 13:17:06 -0800, AP wrote:

> INSERT INTO
> buam_log_login
> IF(
> DATE_ADD($row_lastlogin[log_datetime], INTERVAL " .
> $row_userid[user_refreshtime] . " MINUTE) < NOW(), (
> user_id,
> log_datetime,
> log_ip
> ) VALUES (
> '$row_userid[user_id]',
> NOW(),
> '$_SERVER[REMOTE_ADDR]'),)"

Da wo das $-gegurke nach dem IF steht, kann nur eine Liste von Feldnamen
kommen.

Lässt sich dein Wunsch evtl. mit
INSERT INTO tabelle(felder)
SELECT werte

erfüllen.

Gruß,
Joachim

--
Warnung: \" kann Augenkrebs verursachen.

Re: IF bei INSERT INTO

am 26.01.2006 08:28:14 von AP

Schad, wollte das gerne im SQL statement selber machen.

>Da wo das $-gegurke nach dem IF steht, kann nur eine Liste von Feldnamen
>kommen.

dann :

INSERT INTO
buam_log_login
IF(
DATE_ADD( SELECT log_datetime FROM buam_log_login WHERE user_id =3D
'var_userid' ORDER BY log_datetime DESC LIMIT 1, INTERVAL ...

das wär dann meine idee, hab aber null plan ob die eingefügte select
syntax stimmt (an sich ja, aber in verknüpfung mit dem ganzen)

>Lässt sich dein Wunsch evtl. mit
>INSERT INTO tabelle(felder)
>SELECT werte

da würde er dann ja immer einen eintrag erstellen, nur die werte
wären unterschiedlich ?

Re: IF bei INSERT INTO

am 26.01.2006 09:00:19 von Christian Kirsch

AP wrote:
> Schad, wollte das gerne im SQL statement selber machen.
>
>
>>Da wo das $-gegurke nach dem IF steht, kann nur eine Liste von Feldnamen
>>kommen.
>
>
> dann :
>
> INSERT INTO
> buam_log_login
> IF(
> DATE_ADD( SELECT log_datetime FROM buam_log_login WHERE user_id =
> 'var_userid' ORDER BY log_datetime DESC LIMIT 1, INTERVAL ...
>
> das wär dann meine idee, hab aber null plan ob die eingefügte select
> syntax stimmt (an sich ja, aber in verknüpfung mit dem ganzen)
>

Du findest die Dokumentation unter dev.mysql.com/doc. Da steht die Syntax.

Oder verlege das IF gleich in die Applikation.

Übrigens: Im deutschen Usenet sind Realnamen gern gesehen. Sie sowie
vernünftig formatierte Texte (oder sollte Deine Shift-Taste defekt
sein?) erhöhen die Chance, gelesen zu werden und Antworten zu bekommen.

Re: IF bei INSERT INTO

am 26.01.2006 13:23:48 von Andreas Pankratz

Hallo Christian,

>Du findest die Dokumentation unter dev.mysql.com/doc. Da steht die Syntax.

Der Dokumentation liegen nur Beispiele für das SELECT-Statement bei,
jedoch nicht bei einem INSERT. Deshalb habe ich meine Frage auch hier
gestellt bzw :

>leider gibt die doku nur beispiele für SELECT statements
kann man meinem ersten Post entnehmen

>Oder verlege das IF gleich in die Applikation.
Hab ich mittlerweile gemacht, auch wenn es nicht gerade meine
Ideallösung ist

>Übrigens: Im deutschen Usenet sind Realnamen gern gesehen. Sie sowie
>vernünftig formatierte Texte (oder sollte Deine Shift-Taste defekt
>sein?) erhöhen die Chance, gelesen zu werden und Antworten zu bekommen.
Danke für den Hinweis, ich habe mir bereits ein paar Q&A durchgelesen
und werde in Zukunft versuchen, meine Texte verständlicher zu
schreiben

Gruß
Andreas Pankratz

Re: IF bei INSERT INTO

am 26.01.2006 20:24:52 von Joachim Zobel

On Wed, 25 Jan 2006 23:28:14 -0800, AP wrote:

>>Lässt sich dein Wunsch evtl. mit
>>INSERT INTO tabelle(felder)
>>SELECT werte
>
> da würde er dann ja immer einen eintrag erstellen, nur die werte wären
> unterschiedlich ?

Nö, wenn der SELECT keine Zeile liefert, schreibt der INSERT auch nichts.

Gruß,
Joachim

--
Warnung: \" kann Augenkrebs verursachen.