1054 - Unknown column 'p.products_id' in 'on clause'
Moderatore: mod Generali
1054 - Unknown column 'p.products_id' in 'on clause'
Purtroppo questa volta la ricerca nei post precedenti non mi ha aiutato per nulla...
Il problema che mi ritrovo e' il seguente.
Se guardo nelle categorie dei prodotti all'interno di una categoria sia che essa sia vuota o che sia popolata, allo stesso modo se vado dalla lista dei produttori direttamente su uno di questo, se effettuo una ricerca... insomma un po' ovunque mi ritrovo il classico messaggio di query:
1054 - Unknown column 'p.products_id' in 'on clause'
Purtroppo sono ancora agli inizi e non ho ancora capito come capire dal semplice link in che file siano ubicate le giuste query. ho cercato un po' i vari file per cercare una di tali query ma non ho trovato nulla al fine di correggerla.
Suggerimenti da voi esperti?
Grazie in anticipo
Il problema che mi ritrovo e' il seguente.
Se guardo nelle categorie dei prodotti all'interno di una categoria sia che essa sia vuota o che sia popolata, allo stesso modo se vado dalla lista dei produttori direttamente su uno di questo, se effettuo una ricerca... insomma un po' ovunque mi ritrovo il classico messaggio di query:
1054 - Unknown column 'p.products_id' in 'on clause'
Purtroppo sono ancora agli inizi e non ho ancora capito come capire dal semplice link in che file siano ubicate le giuste query. ho cercato un po' i vari file per cercare una di tali query ma non ho trovato nulla al fine di correggerla.
Suggerimenti da voi esperti?
Grazie in anticipo
mhh mi sto scervellando un po' ma non trovo sta soluzione a livello mysql la query da proprio errore:
select count(p.products_id) as total from products p, products_description pd, manufacturers m left join specials s on p.products_id = s.products_id where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '4' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '10'
(una di esempio di quelle generate)
se invece pero' faccio fare la semplice left join anche mysql non restituisce l'errore:
select * as total from products p left join specials s on p.products_id = s.products_id where 1
E' proprio errarata la sintassi della query per come effettuare la left join di quella serie di tabelle con la tabella special...
Sto usando Mysql 5.0.15
select count(p.products_id) as total from products p, products_description pd, manufacturers m left join specials s on p.products_id = s.products_id where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '4' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '10'
(una di esempio di quelle generate)
se invece pero' faccio fare la semplice left join anche mysql non restituisce l'errore:
select * as total from products p left join specials s on p.products_id = s.products_id where 1
E' proprio errarata la sintassi della query per come effettuare la left join di quella serie di tabelle con la tabella special...
Sto usando Mysql 5.0.15
la query corretta sarebbe
select count(p.products_id) as total from( (products p join products_description pd)join manufacturers m) left join specials s on p.products_id = s.products_id where ......
adesso quello che mi chiedo nessuno ha avuto questo problema?
e sopratutto dove trovo tutte le query quando si guardano le liste dei prodotti dalla sotto categoria, le ricerche per manufactor, e quelle del motore di ricerca perche' a quanto pare capita ovunque e quindi devo modificarmele tutte
E la cosa assurda e' che essendo un count e' solo per ottenere un risultato numero di conto dei "risultati" trovati...
select count(p.products_id) as total from( (products p join products_description pd)join manufacturers m) left join specials s on p.products_id = s.products_id where ......
adesso quello che mi chiedo nessuno ha avuto questo problema?
e sopratutto dove trovo tutte le query quando si guardano le liste dei prodotti dalla sotto categoria, le ricerche per manufactor, e quelle del motore di ricerca perche' a quanto pare capita ovunque e quindi devo modificarmele tutte
E la cosa assurda e' che essendo un count e' solo per ottenere un risultato numero di conto dei "risultati" trovati...
Potrebbe essere, sinceramente non l'ho mai provato con mysql 5 ma in genere i problemi strani vengono fuori dalle nuove versioni di mysql o del phpduketrt ha scritto:M a sto punto mi sa che e' un problema di incopatibilita' con mysql 5 possibile???
'iao
Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto
http://www.semilandia.it
http://www.semilandia.it
Domani provero' a modificare un po' le query... anche se non ho bene capito dove avviene questa query ad inizio di ogni parte di visione del catalogo.
Pensavo in application_top.php ma non trovato query di count del numero di prodotti poi ho visto che e' includes/modules/product_listing.php a gestire la schermata che mi mostra l'errore ma anche li niente query di count che non siano le onnipresenti count(*)... per effettuare i test di controllo di database... domani con piu' calma con ci daro' un occhio.
Pensavo in application_top.php ma non trovato query di count del numero di prodotti poi ho visto che e' includes/modules/product_listing.php a gestire la schermata che mi mostra l'errore ma anche li niente query di count che non siano le onnipresenti count(*)... per effettuare i test di controllo di database... domani con piu' calma con ci daro' un occhio.
La product_listing viene richiamata da index.phpduketrt ha scritto: ho visto che e' includes/modules/product_listing.php a gestire la schermata che mi mostra l'errore ma anche li niente query di count che non siano le onnipresenti count(*)...
'iao
Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto
http://www.semilandia.it
http://www.semilandia.it
Si ero da quello che ci ero arrivato la pagina index e' stata a portarmi a quelle.... adesso vorrei capire dove sta questa benedetta query che non vedo query di count fatte come quella ma solo count(*)...
E poi.... e' sempre product_listing che viene richiamata a termine di una ricerca o a termine delle selezione di un produttore per generare la lista dei prodotti?
In caso affermativo modificando la query li dovrei risolvere il problema... almeno per quello che fino ad ora ho visto del programma perche' potrebbe comparire un problema simile ovunque se la sintassi della query non e' compatibile con mysql5....
mannaggia non ho piu' nemmeno un server con su mysql4 per poter provare se e' quello...
E poi.... e' sempre product_listing che viene richiamata a termine di una ricerca o a termine delle selezione di un produttore per generare la lista dei prodotti?
In caso affermativo modificando la query li dovrei risolvere il problema... almeno per quello che fino ad ora ho visto del programma perche' potrebbe comparire un problema simile ovunque se la sintassi della query non e' compatibile con mysql5....
mannaggia non ho piu' nemmeno un server con su mysql4 per poter provare se e' quello...
Ok evoluzione e' sempre il file split_page_result che si occupa di fare quella query:
e nel file index.php vengono generate le queri dove c'e' il afamigerato:
Ora da perfetto ignorante di come funzioni bene l'intero oscommerce, guardo questo codice da soli 2 giorni, provo a metterci mano e vediamo che ne viene fuori vi tengo aggiornati sempre che la cosa interessi.
Anche perche' se no questo thread e' solo come mio blocco di appunti per ricordarmi cosa sto facendo
Ahh ho trovato query simili pure in: advance_searc_result e new_products la cosa che mi fa' strano e' che i prodotti nel box del new product appaiono ma ripeto sono ancora troppo novizio di questo malloppo di codice per poter aver capito cosa fanno ogni singolo modulo.
Ciao e ringrazio chiunque legga e mi dia le proprie esperienze, strano che nessuno avesse riscontrato questo problema con mysql5
Codice: Seleziona tutto
$count_query = tep_db_query("select count(" . $count_string . ") as total " . substr($this->sql_query, $pos_from, ($pos_to - $pos_from)));
Codice: Seleziona tutto
left join " . TABLE_SPECIALS . " s on p.products_id
Anche perche' se no questo thread e' solo come mio blocco di appunti per ricordarmi cosa sto facendo
Ahh ho trovato query simili pure in: advance_searc_result e new_products la cosa che mi fa' strano e' che i prodotti nel box del new product appaiono ma ripeto sono ancora troppo novizio di questo malloppo di codice per poter aver capito cosa fanno ogni singolo modulo.
Ciao e ringrazio chiunque legga e mi dia le proprie esperienze, strano che nessuno avesse riscontrato questo problema con mysql5
continuo il mio work in progress ora ho risolto la vista dopo la scelta del produttore.
adesso ho corretto un altra query
che e e' quella che capita quando si sceglie una subcategorie e si dovrebbe avere la lista dei prodotti.
Ora la cerco e la sistemo...
adesso ho corretto un altra query
Codice: Seleziona tutto
select count(p.products_id) as total from (((products_description pd join products p) left join manufacturers m on p.manufacturers_id = m.manufacturers_id) join products_to_categories p2c) left join specials s on p.products_id = s.products_id where...
Ora la cerco e la sistemo...
ok ho risolto in parte ora devo sistemare le query per quello che riguarda le ricerche e le ricerche avanzate.
se interessa ecco come correggere il codice
file index.php:
ora mi chiedo per la ricerca avanzata e' advandec_search_result.php che si occupa di mostrare il risultato ma per quella normale?
inizia la nuova ricerca all'errore!
se interessa ecco come correggere il codice
file index.php:
Codice: Seleziona tutto
// BUG MYSQL5
// show the products of a specified manufacturer
if (isset($HTTP_GET_VARS['manufacturers_id'])) {
if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only a specific category
//$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from (((" . TABLE_PRODUCTS . " p join " . TABLE_PRODUCTS_DESCRIPTION . " pd) join " . TABLE_MANUFACTURERS . " m) join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c) left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
} else {
// We show them all
//$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'";
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from ((" . TABLE_PRODUCTS . " p join " . TABLE_PRODUCTS_DESCRIPTION . " pd) join " . TABLE_MANUFACTURERS . " m) left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'";
}
} else {
// show the products in a given categorie
if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only specific catgeory
//$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from (((" . TABLE_PRODUCTS . " p join " . TABLE_PRODUCTS_DESCRIPTION . " pd) join " . TABLE_MANUFACTURERS . " m) join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c) left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
} else {
// We show them all
//$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_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 = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
$listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from (((" . TABLE_PRODUCTS_DESCRIPTION . " pd join " . TABLE_PRODUCTS . " p) left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id) join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c) left join " . TABLE_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 = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
}
}
//FINE: BUG MYSQL5
inizia la nuova ricerca all'errore!
Continuo il mio monologo dicendo che ho risolto pure la ricerca.
File: advanced_search_result.php
pero', e questo pero' e' bello grosso, ho un bel dubbio infatti poche righe sotto c'e' una altra clausula di ricerca in aggiunta alla variabile $form_str
che viene richiamata dal ciclo:
Ora devo capire quando entra in azione questo ciclo perche' la cosa e' problematica in quanto a risposta di questo ciclo dovrei avere un controllo per aggiungere a fronte della prima dichiarazione della variabile $from_str altre parentesi tonde...
devo bene capirla sta cosa...
File: advanced_search_result.php
Codice: Seleziona tutto
//BUG MYSQL5
//$from_str = "from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m using(manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_CATEGORIES . " c, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c";
$from_str = "from (((((" . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m using(manufacturers_id)) join " . TABLE_PRODUCTS_DESCRIPTION . " pd) left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id) join " . TABLE_CATEGORIES . " c) join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c)";
Codice: Seleziona tutto
$from_str .= " left join " . TABLE_TAX_RATES . " tr on p.products_tax_class_id = tr.tax_class_id left join " . TABLE_ZONES_TO_GEO_ZONES . " gz on tr.tax_zone_id = gz.geo_zone_id and (gz.zone_country_id is null or gz.zone_country_id = '0' or gz.zone_country_id = '" . (int)$customer_country_id . "') and (gz.zone_id is null or gz.zone_id = '0' or gz.zone_id = '" . (int)$customer_zone_id . "')";
Codice: Seleziona tutto
if ( (DISPLAY_PRICE_WITH_TAX == 'true') && (tep_not_null($pfrom) || tep_not_null($pto)) ) {
if (!tep_session_is_registered('customer_country_id')) {
$customer_country_id = STORE_COUNTRY;
$customer_zone_id = STORE_ZONE;
}
$from_str .=.....
}
devo bene capirla sta cosa...
Mhh proprio non capisco quando entra in quel ciclo qualsiasi ricerca faccio non mi da errore.... bhe meglio cosi' ma non vorrei che non capissi io quando dovrebbe capitare quella condizione.
Ciao, se avete idee o suggerimenti sono qui se no se vi capita di avere problemi come quelli che ho avuto io se avete mysql5 spero di esservi stato di aiuto per ora finisco il mio monologo di thread
Scusate se ho scritto cose inutili ma io ho sbattuto la testa per 10 ore di lavoro su sta cosa
Ciao, se avete idee o suggerimenti sono qui se no se vi capita di avere problemi come quelli che ho avuto io se avete mysql5 spero di esservi stato di aiuto per ora finisco il mio monologo di thread
Scusate se ho scritto cose inutili ma io ho sbattuto la testa per 10 ore di lavoro su sta cosa
Non hai per niente scritto cose inutili, mi dispiace non poterti aiutare ma non ho da nessuna parte mysql 5.duketrt ha scritto: Scusate se ho scritto cose inutili ma io ho sbattuto la testa per 10 ore di lavoro su sta cosa
Credo che questo tuo monologo pero' servira' ad altre persone
'iao
Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto
http://www.semilandia.it
http://www.semilandia.it
Ops avevo detto che per oggi smettevo ma mi tocca continuare ho fatto un po' di ricerche avanzate cercando left join all'interno di tutti i file di oscommerce e ne ho trovate divese inizio a segnare le correzioni.
File checkout_process.php
e poi:
File products_new.php
E' facile che questa non sia strettamente necessaria ma nel dubbio la ho sistemata lo stesso senza dubbio non e' un errore farlo.
Adesso pausa pranzo poi continuo a fixare il bug.
Ciao
File checkout_process.php
Codice: Seleziona tutto
$stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
FROM (" . TABLE_PRODUCTS . " p
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
ON p.products_id=pa.products_id)
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
ON pa.products_attributes_id=pad.products_attributes_id
WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
Codice: Seleziona tutto
$attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
from ((" . TABLE_PRODUCTS_OPTIONS . " popt join " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval) join " . TABLE_PRODUCTS_ATTRIBUTES . " pa)
left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
Codice: Seleziona tutto
$products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from (" . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id)) join " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";
Adesso pausa pranzo poi continuo a fixare il bug.
Ciao