Re: Abfrage mySQL

Re: Abfrage mySQL

am 22.10.2007 12:43:44 von Claus Reibenstein

de.comp.lang.php.datenbanken existiert. Ich leite Dich mal dahin weiter.

Gruß. Claus

Ralf K. schrieb:
> Hallo!
>
> Abfrage lautet im Moment:
>
> **Abfrage Begin**
>
> $query = sprintf("SELECT hausnr FROM leitungswege WHERE hausnr LIKE
> $new_hausnr");
>
> **Abfrage Ende**
>
> Wenn "$new_hausnr" in der Tabelle steht, wird alles korrekt
> ausgegeben. Nun soll aber, wenn "$new_hausnr" nicht in der mySQL
> Tabelle steht, $new_hausnr = "1" sein.Wie gehts?
>
> Danke schonmal...
>
>

Re: Abfrage mySQL

am 22.10.2007 16:01:46 von dafox

> Ralf K. schrieb:

>> $query = sprintf("SELECT hausnr FROM leitungswege WHERE hausnr LIKE
>> $new_hausnr");

>> Wenn "$new_hausnr" in der Tabelle steht, wird alles korrekt
>> ausgegeben. Nun soll aber, wenn "$new_hausnr" nicht in der mySQL
>> Tabelle steht, $new_hausnr = "1" sein.Wie gehts?

Ganz ohne PHP:

SELECT hausnr
FROM leitungswege t1
WHERE EXISTS(SELECT * FROM leitungswege t2 WHERE t2.hausnr = $new)
AND t1.hausnr = $new
OR NOT EXISTS(SELECT * FROM leitungswege t2 WHERE t2.hausnr = $new)
AND t1.hausnr = 1;

oder

SELECT hausnr
FROM leitungswege t1
WHERE (SELECT COUNT(*) FROM leitungswege t2 WHERE t2.hausnr = $new) > 0
AND t1.hausnr = $new
OR (SELECT COUNT(*) FROM leitungswege t2 WHERE t2.hausnr = $new) = 0
AND t1.hausnr = 1;

und das kann man verkürzen zu

SELECT hausnr
FROM leitungswege t1
WHERE (@c := (SELECT COUNT(*) FROM leitungswege t2 WHERE t2.hausnr =
$new)) > 0
AND t1.hausnr = $new
OR @c = 0
AND t1.hausnr = 1;