SQL-Abfrage zusammensetzen

Hallo,
ich habe ein Problem beim Zusammensetzten einer MySQL-Abfrage.

Nachfolgende Abfrage funktioniert. Der Bindestrch vor
rex_article.category_id ist wichtig, da er auch so in dem angegebenen Feld
steht.

(1)
"SELECT rex_article.name AS artname,rex_article.id AS
artid,rex_article.category_id AS catid,rex_article.beschreibung AS
gliederung FROM rex_article WHERE rex_article.startpage = '1' AND
rex_article.status = '1' AND rex_article.path = -rex_article.category_id
ORDER BY prior DESC";


Diese Abfrage geht nicht. Und zwar wird rex_article.category_id nicht durch
den entsprechenden Zahlenwert ersetzt.

(2)
"SELECT rex_article.name AS artname,rex_article.id AS artid FROM
rex_article WHERE rex_article.startpage = '0' AND rex_article.category_id =
".$row1["catid"]." OR rex_article.path =
-".$row1["catid"]."-rex_article.category_id AND rex_article.status = '1'
ORDER BY prior DESC"

Leider bekomme ich den Wert von rex_article.category_id nicht aus einer
Variablen oder aus einer gesonderten Abfrage, da der Wert nicht immer
gleich ist und in Abhängigket von $row1["catid"] steht. $row1["catid"]
kommt übrigens aus Abfrage (1).


Was kann ich machen, damit rex_article.category_id doch mit dem entsprechen
Wert aus der DB ersetzt wird?


Vielen Dank und liebe Grüße,
Johannes

--
http://johannes.theile.org
Johannes Theile [ Sa, 02 Juli 2005 17:21 ] [ ID #863713 ]

Re: SQL-Abfrage zusammensetzen

Johannes Theile schrieb:

> "SELECT rex_article.name AS artname,rex_article.id AS
> artid,rex_article.category_id AS catid,rex_article.beschreibung AS
> gliederung FROM rex_article WHERE rex_article.startpage = '1' AND
> rex_article.status = '1' AND rex_article.path = -rex_article.category_id
> ORDER BY prior DESC";

> Diese Abfrage geht nicht. Und zwar wird rex_article.category_id nicht durch
> den entsprechenden Zahlenwert ersetzt.

Ach! Für den Parser ist das ja auch ein Operator, der an dieser Stelle
keinen Sinn macht. Du suchst CONCAT('-', rex_article.category_id).

> "SELECT rex_article.name AS artname,rex_article.id AS artid FROM
> rex_article WHERE rex_article.startpage = '0' AND rex_article.category_id =
> ".$row1["catid"]." OR rex_article.path =
> -".$row1["catid"]."-rex_article.category_id AND rex_article.status = '1'
> ORDER BY prior DESC"

Was soll das sein?

> Was kann ich machen, damit rex_article.category_id doch mit dem entsprechen
> Wert aus der DB ersetzt wird?

Ins Manual gucken, Kapitel für Stringfunktionen.
Thomas Hamacher [ Sa, 02 Juli 2005 17:36 ] [ ID #863714 ]
PHP » de.comp.lang.php.datenbanken » SQL-Abfrage zusammensetzen

Vorheriges Thema: ersetzt strip_tags mysql_(real_)escape_string?
Nächstes Thema: in datentyp set abfragen?