Select über mehrere Spalten

Select über mehrere Spalten

am 26.04.2006 16:18:38 von Marcel Polty

Hallo,

in MySQL 5 möchte ich eine Abfrage über mehre Spalten machen.

Mit dem foglenden (einfachen) Konstukt klappt es aber nicht:

SELECT `breite` , `hoehe` , `laenge` , `farbe` , `nr` , `hersteller`
FROM tabelle WHERE `hersteller` LIKE 'mustermann%' AND 'farbe' LIKE
'rot%'

Ich bekomme kein Ergebnis obwohl sichergestellt ist, das die
angeforderten Daten auch vorhanden sind.

Seltsam kommt mir allerdings vor, das wenn ich die Tabelle vor die
Spalte setzte (where '...tabelle.hersteller' LIKE....) Dann kommt die
Fehlermeldung "Unknown column 'tabelle.hersteller' in 'where clause'"

Wenn ich hingegen angebe (...AND 'tabelle.farbe' LIKE...) Dann kommt
keine Fehlermeldung, Die Spalte "farbe" scheint gefunden zu werden. Es
wird aber auch nichts gefunden wenn ich nur nach "farbe" oder nur
nach "hersteller" suchen lasse.

Die Abfrage mache ich folgendermaßen:
mysql_select_db ($dbname))
mysql_db_query($dbname,$query)
while($row = mysql_fetch_array($result))
{...}

Hat jemand eine Idee was da nicht stimmt?

Vielen Dank

Gruß Marcel

Re: Select über mehrere Spalten

am 26.04.2006 16:41:09 von Andreas Pankratz

Hallo Marcel,

>Seltsam kommt mir allerdings vor, das wenn ich die Tabelle vor die
>Spalte setzte (where '...tabelle.hersteller' LIKE....) Dann kommt die
>Fehlermeldung "Unknown column 'tabelle.hersteller' in 'where clause'"

Du darfst den Punkt nicht mitquoten, also richtig :
`tabelle`.`hersteller`

Ansonsten ist PHP hier Offtopic und da kann es zig Lösungen geben.
Teste dein Query mal direkt an der DB was da kommt.

Gruß
Andi

Re: Select über mehrere Spalten

am 26.04.2006 16:49:06 von Marcel Polty

"Andreas Pankratz" schrieb:

>Du darfst den Punkt nicht mitquoten, also richtig :
>`tabelle`.`hersteller`

Tausend Dank Andreas, das war es schon.
Jetzt funktioniert es.

Gruß Marcel

Re: Select über mehrere Spalten

am 26.04.2006 16:57:48 von Axel Schwenke

Marcel Polty wrote:
>
> SELECT `breite` , `hoehe` , `laenge` , `farbe` , `nr` , `hersteller`
> FROM tabelle WHERE `hersteller` LIKE 'mustermann%' AND 'farbe' LIKE
> 'rot%'

Check mal die Quotes um die beiden Vorkommen von farbe. Im Moment
fragst du sinngemäß "SELECT ... WHERE ... AND 0=1".

Abgesehen davon ist es unüblich, *alle* Bezeichner zu quoten. Im
Normalfall quoted man nur Bezeichner, die MySQL sonst falsch verstehen
könnte - z.B. weil sie Schlüsselworte sind. Noch besser ist es, solche
Bezeichner gleich ganz zu vermeiden.


XL