SQL-Abfrage zusammensetzen

SQL-Abfrage zusammensetzen

am 02.07.2005 17:21:04 von Johannes Theile

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

Re: SQL-Abfrage zusammensetzen

am 02.07.2005 17:36:12 von Thomas Hamacher

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.