Kleine Sql Select abfrage, aber doch nicht einfach?

Status
Nicht offen für weitere Antworten.

BlackReloaded

Aktives Mitglied
Hi,

vlt hat von euch ja jemand Ahnung von Mysql, Ich versuche schon die ganze Zeit, einfach eine IF-Anweisung zwischen 2 SELECT-Anweisungen zu bekommen in etwa so:
Code:
if( 1>2 ) {
select * from table1;
} else { 
select * from table2;
}

Soweit ich es bis jetzt Herrausgefunden habe, scheint dies nicht möglich zu sein, oder?

Was ich gefunden habe ist, laut der Manual, eine Prozedur erstellen, Leider hat dies bei mir überhaupt nicht geklappt.

Code:
CREATE PROCEDURE `sg1`.`read_clients` (IN serv STRING) 
BEGIN
 IF serv LIKE '1' THEN
SELECT id AS i_client_id, username AS s_client_name, registerDate AS dt_client_created, dt_client_lastonline
FROM jos_users WHERE i_client_server_id = serv;
ELSE
SELECT * FROM users;
END IF
END

Leider bekomme ich da immer eine Fehlermeldung:
Code:
#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 'STRING

Zusätzlich wüsste ich auch gar nicht wie ich es in einer SQL-Anweisung nutzen könnte, denn ich darf nur 1 Querry absetzen.

Wenn irgendjemand eine Ahnung hat, oder vlt nur einen Link den ich bis jetzt noch nciht gefunden habe, wäre ich euch echt dankbar.

Gruß
Marc
 

HolgerB

Mitglied
for the right syntax to use near 'STRING

Es gibt kein Datentyp "String" in MySQL. Benutzte VARCHAR oder CHAR, INTEGER etc., je nachdem was du brauchst.

Code:
CREATE PROCEDURE `sg1`.`read_clients` (IN serv STRING)
BEGIN
IF serv LIKE '1' THEN
SELECT id AS i_client_id, username AS s_client_name, registerDate AS dt_client_created, dt_client_lastonline
FROM jos_users WHERE i_client_server_id = serv;
ELSE
SELECT * FROM users;
END IF
END

Du benutzt ";" um die jeweiligen Statements abzuschließen was im Grunde korrekt ist aber mit dem ersten ";" wird auch die Procedure beendet.
Daher benutze den DELIMITER.

Code:
DELIMITER $$

CREATE PROCEDURE `sg1`.`read_clients` (IN serv INTEGER))
BEGIN
IF serv > 1 THEN
SELECT id AS i_client_id, username AS s_client_name, registerDate AS dt_client_created, dt_client_lastonline
FROM jos_users WHERE i_client_server_id = serv;
ELSE
SELECT * FROM users;
END IF;
END
$$

DELIMITER ;

Versuch mal ob das klappt.

Grüße
Holger
 

Maximum

Aktives Mitglied
Nur ne kleine Frage am Rande:
Ist die if-Abfrage da oben wirklich so gemeint wie sie da steht?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben