Hallo zusammen,
ich versuche ein Asterisk „*“ in einer WHERE-Clause einzubauen, erhalte aber nicht das gewünschte Ergebnis.
Folgender Abschnitt meiner Query ist in meiner DB so lauffähig:
SELECT p.menge, b.praxis_id
FROM posten p
INNER JOIN beleg b ON p.beleg_id = b.id AND b.praxis_id = ‚*‘
Nur wenn ich „b.praxis_id = ‚*‘“ schreibe erhalte ich keine Ergebnisse. Wenn ich allerding b.praxis_id = ‚1‘ schreibe, erhalte ich die korrekten Ergebnisse zu „b.praxis_id = ‚1‘“.
Hab schon im Forum von MySQL gesucht. Dort wurde schon einem anderen gesagt das das laufen sollte.
Ich benötige diese Schreibweise, da ich die praxis_id in einer Variablen übergeben möchte und der Inhalt der Variablen „*“ sein soll wenn alle Einträge zu praxis_id angesprochen werden sollen.
Da ich in deinem Mysql Script keine Where-Clause finden kann und mir gerade auch nicht vorstellen kann was für Fehlermeldungen auftreten, bis auf das du keine Ausgabe hast,
So geht das nicht, und bei einer numerischen ID ist es auch nicht sinnvoll, da mit LIKE zu suchen. Daher lasse das „AND praxis_id=‚a‘“ weg, wenn die Variable ‚*‘ ist…
Für PHP:
$sql = "SELECT p.menge, b.praxis_id
FROM posten p INNER JOIN beleg b ON p.beleg_id = b.id ";
if ($praxis_id!=’*’) $sql .= " WHERE praxis_id=’$praxis_id’ ";
Also Asterisk ist keine Datenbank, ich denke mal du nutzt MySQL, auf die der Asterisk zugreift.
Des Weiteren ist der „*“ (Stern) kein gültiger Platzhalter in MySQL der lautet dort „%“ (Prozentzeichen) und muss in Verbindung mit LIKE verwendet werden.
z.B.: „b.praxis_id LIKE ‚%‘“
Und wenn du mit „b.praxis_id = ‚*‘“ erreichen willst, dass alle b.praxis_id zu zeigen sind, dann lass diesen Ausdruck doch weg.
Also so :
SELECT p.menge, b.praxis_id
FROM posten p
INNER JOIN beleg b ON p.beleg_id = b.id
mit praxis_id=’*’ suchst Du alle Einträge, die als praxis_id ein Sternchen haben. Da Du die anschein nummerierst, wirst Du keine finden.
Die Frage ist, wie willst Du die Variable übergeben? Ich gehe mal davon aus, dass Du das mit einer Programmiersprache (php / Perl / Ruby) machst. In dem Falle probiere einfach mal ein ‚?‘ anstatt des Sternchens.