MYSQL Version 5 Problem, Unknown column 'p.manufacturers_id' in 'on clause'

liquidbeats

Erfahrenes Mitglied
Hallo, ich bekomme folgenden SQL Fehler.

1054 - Unknown column 'p.manufacturers_id' in 'on clause'


Code:
  SELECT DISTINCT 
  p.products_id, 
  p.products_fsk18, 
  pd.products_name, 
  pd.products_short_description, 
  p.products_image, 
  p.products_price, 
  p.products_vpe, 
  p.products_vpe_status, 
  p.products_vpe_value, 
  p.products_tax_class_id, 
  p.products_date_added, 
  m.manufacturers_name 
  FROM products AS p, 
  categories AS c, 
  products_to_categories AS p2c 
 LEFT JOIN manufacturers AS m ON (m.manufacturers_id = p.manufacturers_id) 
 LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) AND pd.language_id = '2' 
 WHERE 
 c.categories_status=1 
 AND p.products_id = p2c.products_id 
 AND c.categories_id = p2c.categories_id 
 AND products_status = '1' 
 AND p.products_date_added > '2005.12.23' 
 ORDER BY p.products_date_added DESC

was bei MYSQL Version 4 und 3 noch geht ist bei 5 nicht mehr Funktionisfähig, kann mir vlt jemand Helfen und sagen wo dort de rwurm zu finden ist?

Grüße
 
Hallo,

mit MySQL5 kam unter anderem auch die Neuerung, dass man sich absofort an gängige SQL-Standards zu halten halt. Das bedeutet in deinem Beispiel (ich nehme an OS-Commerce oder ein Ableger davon), dass sich eine linkende Tabelle (LEFT JOIN) beim Aufbau des SQL-Befehels genau hinter der bezugnehmenden Tabelle stehen muß...in den älteren MySQL Versionen war dies kein Problem, aber ab MySQL5 geht das eben nicht mehr.

so sollte es klappen:
Code:
 SELECT DISTINCT 
  p.products_id, 
  p.products_fsk18, 
  pd.products_name, 
  pd.products_short_description, 
  p.products_image, 
  p.products_price, 
  p.products_vpe, 
  p.products_vpe_status, 
  p.products_vpe_value, 
  p.products_tax_class_id, 
  p.products_date_added, 
  m.manufacturers_name 
  FROM 
  manufacturers AS m 
  RIGHT JOIN products AS p ON (m.manufacturers_id = p.manufacturers_id) 
  LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) AND pd.language_id = '2' , 
  categories AS c, 
  products_to_categories AS p2c 
 WHERE 
 c.categories_status=1 
 AND p.products_id = p2c.products_id 
 AND c.categories_id = p2c.categories_id 
 AND products_status = '1' 
 AND p.products_date_added > '2005.12.23' 
 ORDER BY p.products_date_added DESC

mfg Bloddy

ps.:
Sofern es OS Commerce ist, dann viel Spass - das Ding hat etliche solcher SQL Fehler drin ;)
 
Hi,

vielen Dank!
Ich habe gestern schon etwas gesucht, und bin da auch auf einige MYSQL Beispiele gestoßen.
Letzendlich Funktioniert deines auch, sprich es kommen keine Fehler, aber die abfrage an sich ist nicht mehr so Funktionsfähig wie sie eigentlich gewesen ist.
Diese abfrage soll die Produkte aus der Datenbank holen die Neu sind, also welche die nicht älter als 30 Tage in der Datenbank liegen.
Diese abfrage holt nur noch einen Datensatz aus der Datenbank.

ich weis das es noch mehrere verdorbene Abfragen gibt, Teilweise habe ich diese auch Korregieren können aber bei dieser will es einfach nicht klappen.
Ist denn eigentlich diese abfrage auch abwärtskompatibel, z.b. mit MYSQL 3 oder 4 ?

Grüße
 
Nochmal Hi,

es Funktioniert doch :rolleyes:
Das Problem war in der Datenbank zu suchen, und zwar die Spalte products_date_added.
Wenn dort nur Nullen stehen, ist das Produkt ausserhalb der 30 Tage, und wurde folglich nicht mit ausgegeben.

Jetzt Funktioniert es, aber da sieht man wieviele Fehler es gibt.
Man Kopiert ein Produkt, und bums wird nur die Hälfte übertragen, oder aber bestehende Spalten nicht Aktualisiert.

Besten Dank jedenfalls :)

Grüße
 
Gern geschehen - ich hatte vor nicht allzulanger Zeit mit dem gleichen problem zu kämpfen. Klar wwaren die Fehler recht einfach zu beseitigen, aber es ist doch irgendwo lästig gewesen...

Viele Grüße
Bloddy Newbie
 
Wo Genau finde ich den Ordner oder ist das auf dem Server?' p.manufacturers_id'
 
manufacturers_id ist in der Datenbank zu finden und zwar unter manufacturers.
Die Dateien selbst, in welchen diese ganzen SQL-Satements enhalten sind, sind überall verteilt. includes/modules/products_listing.php, products_new.php usw.
Wichtig wäre zu wissen ob OSC oder der X-T (<= beabsichtigt!) Ableger, bei dem X-T wäre vorallem die Version sinnvoll. 303 ist ganz anders als 304 und die 304 Service-Pack > 1 wieder anders Strukturiert. Da gibt es die Datei product.php im Ordner classes.
Version 2 kann ich nicht sonderlich Helfen, zu lange her ;)

Grüße
 

Neue Beiträge

Zurück