# Fehler bei Mysql Abfrage (Unknown column '' in 'field list')



## slicka1 (26. September 2005)

Hallo, 

ich habe ein Problem mit einer mysql Abfrage.
und zwar habe ich eine Suche bei der man eine Nummer eingeben kann und anschließend entsprechende Ergebnisse erhält. Gibt man nun eine Nummer ein die ausschliesliche aus Zahlen besteht (bsp. 403200), kommt auch das passende Ergebnis. 

Aber wenn man nun eine Nummer eingibt, die neben Zahlen auch Buchstaben enthält (bsp. 403200W) so erhalte ich folgenden MySql Error:

Unknown column '403200W' in 'field list'

Das MySql Feld in dem gesucht wird, hat den Typ varchar(40)

Hier noch die MySql Abfrage:


```
$sql = "SELECT tblvgweb.* , tblwebbestand.Frei, tblwebbestand.Dispo, tblwebbestand.Kritisch
              FROM tblvgweb
              INNER JOIN tblwebbestand ON tblvgweb.TEILENR = tblwebbestand.TEILENR
              WHERE tblvgweb.TEILENR LIKE '".$_GET['TEILENR']."%' OR tblvgweb.HERST_TEILE_SHORT LIKE '".$_GET['TEILENR']."%'
              ORDER BY '".$_GET['sort']."' ".$list.""; 
      $result = mysql_query($sql) OR die(mysql_error());
```

Für Hinweise/Tipps schonmal vielen Dank im Voraus!

Gruß
slicka1


----------



## vop (27. September 2005)

Ich würde mir mal ansehen, was nach ORDER BY für Werte stehen.

 Welchen Inhalt hat $list?
 welchen Inhalt hat $_GET['sort']?

 Am einfachsten kommtst Du dem Fehler auf die Spur, wenn du den kompletten Sql-String $sql vor der Ausführung einmal anzeigen läßt. Vielleicht siehst Du dann schnell das Problem.

 vop


----------



## slicka1 (27. September 2005)

$list hat entweder den Inhalt ASC oder DESC
und $_GET['sort'] hat den Inhalt nach dem sortiert werden soll (entweder nach der nummern, oder nach anderen Kriterien die in meiner Tabelle angezeigt werden)

Ich habe mir den SQL string auch angesehen, konnte aber keine Fehler feststellen, die Teilenr. steht in ' ' (bsp: '400200W%'). Ausserdem funktioniert die Abfrage ja einwandfrei solange keine Buchstaben enthalten sind :\


----------



## vop (27. September 2005)

Poste doch mal den Sql-Befehl, der erzeugt wird, wenn Nummern und Buchstaben vorkommen.

 vop


----------



## slicka1 (27. September 2005)

SELECT tblvgweb . * , tblwebbestand.Frei, tblwebbestand.Dispo, tblwebbestand.Kritisch FROM tblvgweb INNER JOIN tblwebbestand ON tblvgweb.TEILENR = tblwebbestand.TEILENR WHERE tblvgweb.TEILENR LIKE '403200W%' OR tblvgweb.HERST_TEILE_SHORT LIKE '403200W%' ORDER BY 'HERST_TEILENR' asc


----------



## vop (27. September 2005)

Ist das tatsächlich der Sql-Befehl, wie er vom System erzeugt wurde?


			
				slicka1 hat gesagt.:
			
		

> SELECT tblvgweb . * , tblwebbestand.Frei, tblwebbestand.Dispo, tblwebbestand.Kritisch FROM tblvgweb INNER JOIN tblwebbestand ON tblvgweb.TEILENR = tblwebbestand.TEILENR WHERE tblvgweb.TEILENR LIKE '403200W%' OR tblvgweb.HERST_TEILE_SHORT LIKE '403200W%' ORDER BY 'HERST_TEILENR' asc


 Das kann ich mir fast nicht vorstellen, da zwischen tblvgeb und .* ein Leerzeichen steht!?

 Mach Dir doch bitte die Mühe und lass dir den Befehl wirklich ausgeben, evtl. steht da nämlich gerade nicht das drin, was du erwartest.

 vop


----------



## slicka1 (27. September 2005)

vop hat gesagt.:
			
		

> Ist das tatsächlich der Sql-Befehl, wie er vom System erzeugt wurde?



Ja das ist tatsächlich der Befehl der vom System erzeugt wurde




			
				vop hat gesagt.:
			
		

> Mach Dir doch bitte die Mühe und lass dir den Befehl wirklich ausgeben, evtl. steht da nämlich gerade nicht das drin, was du erwartest.



Die "Mühe" hab ich mir gemacht, hab den befehl mir echo ausgegeben, das Ergebnis habe ich bereits oben gepostet. Deshalb bereitet mir dieses Problem auch so kopfzerbrechen, da ich absolut keine Ahnung habe an was es liegen könnte.



			
				vop hat gesagt.:
			
		

> Das kann ich mir fast nicht vorstellen, da zwischen tblvgeb und .* ein Leerzeichen steht!?


Daran ist es auch nicht gelegen, habs grad auch nochmal ohne dem Leerzeichen ausprobiert... macht keinen Unterschied!

noch weitere Ideen?

gruß
slicka1


----------



## vop (27. September 2005)

Hast Du es mal direkt mit MySql-Zugriff über eine Konsole oder so versucht?

 Ansonsten würde ich den Befehl Stück für Stück auseinandernehmen.
 Also ORDER BY weglassen

 Dann würde ich die beiden LIKE - Konstrukte, die mit OR kombiniert werden mal einzeln in Klammern setzen 
 (... LIKE '....' ) OR ( ... LIKE .... )

 Hilft das vielleicht

 vop


----------



## slicka1 (27. September 2005)

vop hat gesagt.:
			
		

> Hast Du es mal direkt mit MySql-Zugriff über eine Konsole oder so versucht?


Nein so einen Zugriff habe nicht



			
				vop hat gesagt.:
			
		

> Ansonsten würde ich den Befehl Stück für Stück auseinandernehmen.
> Also ORDER BY weglassen
> 
> Dann würde ich die beiden LIKE - Konstrukte, die mit OR kombiniert werden mal einzeln in Klammern setzen
> ...


Klappt auch nicht.


Wie gesagt, die Abfrage funktioniert ja einwandfrei wenn ich Zahlen eingebe (was auch 99% der Abfragen, die mit dem Script gemacht werden entspricht), aber sobald Buchstaben oder Kombinationen aus Ziffern und Buchstaben eingegeben werden, erhalte ich den Fehler. Und ich würde das 1% der Abfragen eben auch noch gerne abdecken 


```
Unknown column '...' in 'field list'
```

gruß
slicka1


----------



## vop (27. September 2005)

Ich habe schon verstanden, dass der Fehler nur bei der Kombination von Ziffern und Buchstaben auftritt. Ich wundere mich dabei genauso wie Du darüber.
 Du solltest dennoch versuchen, den Fehler weiter einzukreisen, indem Du bspw. nur eine der gejointen Tabellen ausprobierst, dann die andere etc.

 Vielleicht mag deine MySql-Version (welche ist das eigentlich nochmal) ja aus irgendwelchen Gründen keine Konvertierung von '403200W%' weil es in der Spalte eine Zahl erwartet oder sonsts so irgend etwas.

 Wie sind  tblvgweb.HERST_TEILE_SHORT
 und tblvgweb.TEILENR
 in der Tabelle definiert?

 Sorry, so langsam gehen mir auch die Ideen aus.
 vop


----------



## slicka1 (6. Oktober 2005)

sorry hatte in letzter Zeit zu viele andere Dinge zu tun, deshalb hab ich das Topic hier vergessen. Doch mein Problem ist leider noch immer ungelöst! 



			
				vop hat gesagt.:
			
		

> Vielleicht mag deine MySql-Version (welche ist das eigentlich nochmal) ja aus irgendwelchen Gründen keine Konvertierung von '403200W%' weil es in der Spalte eine Zahl erwartet oder sonsts so irgend etwas.



Lokal: MySQL 4.1.10
Web: MySQL 3.23.37




			
				vop hat gesagt.:
			
		

> Wie sind  tblvgweb.HERST_TEILE_SHORT
> und tblvgweb.TEILENR
> in der Tabelle definiert?



   TEILENR  varchar(60) 
   HERST_TEILE_SHORT  varchar(40) 
   HERST_TEILENR  varchar(40) 


gruß
slicka1


----------

