Vreemde fout bij query
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?
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.
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
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'
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
Gewijzigd op 01/01/1970 01:00:00 door Noppes
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!!
leggen waar de fout zit?"
wel nu dat heb ik al gedaan in mijn vorige post
Quote:
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
Gewijzigd op 01/01/1970 01:00:00 door Noppes
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!
Gaat eerst de basis eens bekijken:
http://www.w3schools.com/SQL/sql_func_count.asp
http://www.w3schools.com/SQL/sql_join.asp
En integers NIET tussen quotes zoals Noppes dus wel doet.....
- 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!
"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.
Dat SQL ongelijk is aan PHP is een ieder wel duidelijk, echter wat Afra probeert duidelijk te maken is dat je waarden welke je gaat toekennen aan een tabelveld van het type numeriek je deze in SQL niet qoute. En ja daar heeft hij/zij/het dan gelijk in!
SeaCrime, aangezien dit niet de enige query zal zijn in je verouderde OsCommerce, waarom ga je niet de nieuwste versie in gebruik nemen?
Noppes schreef op 21.06.2009 11:41:
@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!
- 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!
Dan lijkt het mij aan ons de taak om TS erop te wijzen dat dat misschien niet zo'n geweldig plan is. Ik zie namelijk geen voordelen van categories_id als varchar op te slaan. Maar je hebt gelijk, indien dit wel de situatie is, dan moet het wel in quotes.
Noppes schreef op 21.06.2009 12:25:
@Bart
Dat SQL ongelijk is aan PHP is een ieder wel duidelijk, echter wat Afra probeert duidelijk te maken is dat je waarden welke je gaat toekennen aan een tabelveld van het type numeriek je deze in SQL niet qoute. En ja daar heeft hij/zij/het dan gelijk in!
Dat SQL ongelijk is aan PHP is een ieder wel duidelijk, echter wat Afra probeert duidelijk te maken is dat je waarden welke je gaat toekennen aan een tabelveld van het type numeriek je deze in SQL niet qoute. En ja daar heeft hij/zij/het dan gelijk in!
Jup. En laten we het maar op "hij" houden.
Degene die mij kan laten zien waar de fout zit en hoe ik het kan verbeteren zal ik met een gratis domein naar keuze belonen. Bij voorbaat dank!
maar dat wist je waarschijnlijk al ;-)
En hoe kan ik m verbeteren Noppes, dat is mijn laatste vraag? Als je even de juiste query laat zien zal ik je niet meer lastigvallen. Dan krijg je ook je verdiende gratis domein naar keuze (wat ik bij TransIP op jouw naam registreer, waarvoor ik betaal en daarna push (gratis) naar jouw account).
Het ergste vind ik wel dat je je er niet in wilt verdiepen.... dan wel de suggesties niet opvolgt welke gegeven worden......
En al zal die query executeerbaar worden dan nog heb ik m'n twijfels over de juiste uitkomst...
Begrijp me niet verkeerd: ik respecteer het dat je me helpt en daar wilde ik iets tegenover zetten..