Mailinglisten-Archive |
Hi all,
ich habe eine Tabelle etwa so
test_table:
| Nutdaten | Condition1 | Condition2 |
aus einer Datenquelle generiere ich ein SELECT-Statement wie folgt:
SELECT Nutzdaten FROM test_table WHERE Condition1 = '$qdata1' AND Condition =
'$qdata2';
In $qdata1 und $qdata2 gibt es immer Werte.
OK - jetzt das Problem:
In einer ganzen Reihe von Fällen ist es völlig egal was in $qdata2 steht, es
reicht schon $qdata1 zur eindeutigen Bestimmung aus. Da sich immer mal die
Condition1 oder Condition2 ändern können, will ich das nicht jedes mal das
Script umschreiben, sondern mit einer Datenbank machen, außerdem ist mit
unbekannten Condition2 zu rechnen, die mit abgefangen werden sollen.
Wie es mysql in der Benutzerverwaltung auch macht, möchte ich, das ein '%'
in Spalte Condition2 alle Fälle matcht, egal was aktuell in $qdata2 steht.
Beispiel:
| Nutdaten | Condition1 | Condition2 |
|---------------|-----------------|-----------------|
| Hallo | www | xxx |
| super | qwq | % |
$qdata1 = "qwq";
$qdata2 = "irgendetwas";
SELECT Nutzdaten FROM test_table {???GESUCHTE BEDINGUNG mit $qdata1 AND
$qdata2 ??? };
gibt "super" zurück.
$qdata1 = "www";
$qdata2 = "irgendetwas";
SELECT Nutzdaten FROM test_table {???GESUCHTE BEDINGUNG mit $qdata1 AND
$qdata2 ??? };
gibt "" zurück.
$qdata1 = "ww";
$qdata2 = "xxx";
SELECT Nutzdaten FROM test_table {???GESUCHTE BEDINGUNG mit $qdata1 AND
$qdata2 ??? };
gibt "Hallo" zurück.
Im Prinzip ist es ein umgekehrtes LIKE %, nicht auf Abfrage, sondern auf
Datenbankseite. Die Benutzerverwaltung von mysql machts ja auch, also sollte
es möglich sein.
Meine Lösung bisher ist ... HAVING Condition2 IN('$qdata2', '%' )
geht, aber ich hab so ein ungutes Gefühl dabei.
--
Einen erfolgreichen Tag
Johannes G. Arlt
technik at part2part.com
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive