# Kleine Sql Select abfrage, aber doch nicht einfach?



## BlackReloaded (8. Feb 2008)

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:

```
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.


```
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:

```
#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 (9. Mrz 2008)

> 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.


```
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.


```
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 (9. Mrz 2008)

Nur ne kleine Frage am Rande:
Ist die if-Abfrage da oben wirklich so gemeint wie sie da steht?


----------



## BlackReloaded (13. Mrz 2008)

Danke Holge, das hat jetzt so geklappt.
Da habe ich wohl Java mit Sql ein wenig durcheinander gebracht  :lol: 



> Nur ne kleine Frage am Rande:
> Ist die if-Abfrage da oben wirklich so gemeint wie sie da steht?



Welche meinst du jetzt?

Gruß Marc


----------

