Asterisk in WHERE clause: no result

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.

Danke euch schonmal für Feedback.

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,

würde ich dich bitten, dir dieses hier mal durch zu lesen:
http://dev.mysql.com/doc/refman/5.1/de/join.html

MFG

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’ ";

Hallo,

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

Hallo zusammen,
ich versuche ein Asterisk „*“ in einer WHERE-Clause
einzubauen, erhalte aber nicht das gewünschte Ergebnis.

Danke euch schonmal für Feedback.

Hi,

SQL 92 kennt drei Platzhalter:

select spalte from tabelle where spalte

matches ‚*rad‘ [oder] like ‚%rad‘
–gibt Fahrrad, Dreirad, Rhönrad, der Platzhalter kann auch am Ende stehen

like ‚%rad%‘ [oder matches ‚*rad*‘]
–gibt die oberen drei, aber auch radeln, gerade eben, …

like ‚_ahr_‘
– gibt fahre, Bahre, Jahre, nicht aber Jahren, Radfahrer zurück.

Resume:
_ = Platzhalter für genau ein Zeichen, Nutzung kannst Du testen, weiß ich momentan nicht und bin zu faul zun gucken…

% = Platzhalter für mehrere oder kein Zeichen, Nutzung mit „like“
* = Wie ‚%‘, Nutzung mit „matches“

Hallo Friendly,

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.

Gruss
Steffen