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;