Beste PHP'ers,

In mijn osCommerce webshop krijg ik de volgende fout nadat ik een productcategorie wil bekijken:

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

select count(*) as total from products_description pd, products p left join manufacturers m on p.manufacturers_id = m.manufacturers_id, products_to_categories p2c left join specials s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '2' and p2c.categories_id = '274'

Waar kan dit aan liggen? Ik begrijp de fout namelijk ook niet...

Bij voorbaat dank voor jullie hulp!!
Gebruik je misschien een nieuwere versie van OsCommerce en een oudere versie qua db structuur?
Het is een mySQL bug (of zit er wat logisch achter?).

Je kan het oplossen door je FROM tables om te draaien, dus "products p, products_description pd" IPV "products_description pd, products p".

En als dat niet werkt kan je proberen om alleen de LEFT JOIN syntax the gebruiken, en niet gaan 'joinen' met de WHERE clausule.
Wel je maakt er een alle gaartje van...
Schrijf altijd je queries overzichtelijk!!!!!!!!!!!!!!

De foutmelding komt omdat de manier waarop je de from clause hebt samengesteld niet klopt.

Mischien dat je het met een overzichtelijke query het wel ziet wat er mis aan is:

select 	count(*) as total 
from	products_description pd
,		products p 
		left join manufacturers m 
			on p.manufacturers_id = m.manufacturers_id
,		products_to_categories p2c 
		left join specials s 
			on p.products_id = s.products_id 
where	p.products_status = '1' 
and		p.products_id = p2c.products_id 
and		pd.products_id = p2c.products_id 
and		pd.language_id = '2' 
and		p2c.categories_id = '274'


oh en dan nog 1 gouden regel:
alle joins vastleggen in de from of alle in de where
dus niet in beide
Bedankt voor jullie hulp allereerst, echter werkt het nog niet.

Bas:
Ik gebruik de database versie 3.2.0 van phpMyAdmin en een
redelijk oud osCommerce script (heb de webshop namelijk
gekocht, deze maakte ook nog gebruik van register_globals).

Gerjo:
Dit heb ik gedaan maar blijkt niet te werken...

Noppes:
Dit was de foutmelding die ik plakte, het script ziet er anders
uit, wel iets geordender. Echter kan ik niet zien wat er fout
is aangezien ik niet met left join etcetera werk omdat ik hier
nog onvoldoende kennis van heb, zou je het me uit kunnen
leggen waar de fout zit?

Bij voorbaat dank!!


"zou je het me uit kunnen
leggen waar de fout zit?"

wel nu dat heb ik al gedaan in mijn vorige post
De foutmelding komt omdat de manier waarop je de from clause hebt samengesteld niet klopt.


dus je zult de query zodanig moeten herschrijven dat ie doet wat jij wilt dat ie moet doen
Noppes, ik weet dat er een fout in zit maar kan 'm zelf niet herkennen omdat ik niet zoveel verstand heb van zulke geavanceerde database queries. Ik zou het erg waarderen als je me uit kunt leggen hoe ik het moet verbeteren!
En integers NIET tussen quotes zoals Noppes dus wel doet.....
@Afra, dus jij neemt met je gezonde verstand aan dat
- language_id
- categories_id
- products_status
een numeriek veldtype hebben

Je kan niet zo maar schrijven `integers NIET tussen quotes`, wat als de TS lekker varchar als type gedefineerd heeft staan!
@afra,
"En integers NIET tussen quotes zoals Noppes dus wel doet....."

SQL != php.

Dus Intregers WEL binnen quotes ;)
Je help de hele query om zeep als je het niet doet.

Reageren