Devo correggere una query ma NON LA TROVO

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
Avatar utente
ricman
membro Senior
membro Senior
Messaggi: 477
Iscritto il: 22/04/2004, 0:00
Località: Italy - Toscana

Devo correggere una query ma NON LA TROVO

Messaggio da ricman »

Allora ho dato un occhiata e sono incasinato!! Per ora non ho tempo di correggere l'errore "1054 - Unknown column 'p.products_id' in 'on clause'" tramite l'applicazione di patch. Ho fatto troppe modifiche e ci per derei troppo tempo.
L'emergenza mi ha costretto a modificare e correggere la query errata in una nuova compatibile e funzionanante per il mysql 5.

Il problema è che non riesco a trovare il file e il punto in cui mettere la query nuova...
Cercando quella "errata"

Codice: Seleziona tutto

select count(distinct p.products_id) 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 = '4' and p2c.categories_id = '
Non trovo nulla...

Chi mi dice dov'e?

Grazie
--
ricman
Avatar utente
ricman
membro Senior
membro Senior
Messaggi: 477
Iscritto il: 22/04/2004, 0:00
Località: Italy - Toscana

Messaggio da ricman »

help :cry: :cry:
--
ricman
Avatar utente
ricman
membro Senior
membro Senior
Messaggi: 477
Iscritto il: 22/04/2004, 0:00
Località: Italy - Toscana

Messaggio da ricman »

Nessuno ne sa nulla? :( :( :( :( :( :( :? :?
--
ricman
Bass
membro Master
membro Master
Messaggi: 3593
Iscritto il: 18/04/2004, 0:00
Località: Varese
Contatta:

Messaggio da Bass »

ricman ha scritto:Nessuno ne sa nulla? :( :( :( :( :( :( :? :?
Scusa ma quando ti compare che file stai richiamando?

'iao

Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto

http://www.semilandia.it
Avatar utente
ricman
membro Senior
membro Senior
Messaggi: 477
Iscritto il: 22/04/2004, 0:00
Località: Italy - Toscana

Messaggio da ricman »

Bass ha scritto: Scusa ma quando ti compare che file stai richiamando?
In pratica una cosa del genere:
http://sito.com/index.php?cPath=33&osCs ... 932eda48f7
--
ricman
Bass
membro Master
membro Master
Messaggi: 3593
Iscritto il: 18/04/2004, 0:00
Località: Varese
Contatta:

Messaggio da Bass »

ricman ha scritto: In pratica una cosa del genere:
http://sito.com/index.php?cPath=33&osCs ... 932eda48f7
Ok, allora le query sono quelle in index.php, dovrebbero essere queste:

Codice: Seleziona tutto

// 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c 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 . "'";
      }
'iao

Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto

http://www.semilandia.it
Avatar utente
ricman
membro Senior
membro Senior
Messaggi: 477
Iscritto il: 22/04/2004, 0:00
Località: Italy - Toscana

Messaggio da ricman »

Bass ha scritto: Ok, allora le query sono quelle in index.php, dovrebbero essere queste:

Codice: Seleziona tutto

// We are asked to show only a specific category
.....
Ehm... si può dire min**ia?
Non riesco a risalire quale sia la query interessata.
Forse nemmeno chi l'ha progettato la sa ritrovare!! :)
Avevo corrretto e testato (con successo) tramite phpmyadmin la query errata. Però è veramente irrintracciabile!!!! :(

Non è che si può ricompilare il MySql5 per una retrocompatibilità?
Mi può convenire mettere in piedi un server col Mysql4 ripristinando la "vecchia" situazione e, quando ho tempo, rifare il sito con la nuova vers. di OsC (quindi già pronto per il mysql5)?

Boh? Che dite?
:cry:
--
ricman
Bass
membro Master
membro Master
Messaggi: 3593
Iscritto il: 18/04/2004, 0:00
Località: Varese
Contatta:

Messaggio da Bass »

ricman ha scritto: Ehm... si può dire min**ia?
Non riesco a risalire quale sia la query interessata.
Strano, le query da modificare in index sono quelle, al limite se hai su la totalB2B saranno leggermente diverse ma dovresti trovarle subito

'iao

Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto

http://www.semilandia.it
Avatar utente
ricman
membro Senior
membro Senior
Messaggi: 477
Iscritto il: 22/04/2004, 0:00
Località: Italy - Toscana

Messaggio da ricman »

Bass ha scritto: Strano, le query da modificare in index sono quelle, al limite se hai su la totalB2B saranno leggermente diverse ma dovresti trovarle subito
Questa è la query in output nell'errore del sito:

Codice: Seleziona tutto

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

select count(distinct p.products_id) 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 = '4' and p2c.categories_id = '33'

[TEP STOP]
Io ho copiato e incollato questa Select su Phpmyadmin e l'ho corretta in questo modo:

Codice: Seleziona tutto

SELECT count( DISTINCT products.products_id ) AS total
FROM products
INNER JOIN products_description ON products_description.products_id = products.products_id
INNER JOIN products_to_categories ON products.products_id = products_to_categories.products_id
LEFT JOIN manufacturers ON ( products.manufacturers_id = manufacturers.manufacturers_id ) 
LEFT JOIN specials ON products.products_id = specials.products_id
WHERE products.products_status = '1'
AND products_description.language_id = '4'
AND products_to_categories.categories_id = '33'
Bene, funzionerebbe (ovvero mi restituisce qualcosa di buono...).

Ora sul mio index.php ho questo:

Codice: Seleziona tutto

...
  } elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
// create column list
    $define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL,
                         'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME,
                         'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER,
                         'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE,
                         'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY,
                         'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,
                         'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,
                         'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW);

    asort($define_list);

    $column_list = array();
    reset($define_list);
    while (list($key, $value) = each($define_list)) {
      if ($value > 0) $column_list[] = $key;
    }

    $select_column_list = '';

    for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
      switch ($column_list[$i]) {
        case 'PRODUCT_LIST_MODEL':
          $select_column_list .= 'p.products_model, ';
          break;
        case 'PRODUCT_LIST_NAME':
          $select_column_list .= 'pd.products_name, ';
          break;
        case 'PRODUCT_LIST_MANUFACTURER':
          $select_column_list .= 'm.manufacturers_name, ';
          break;
        case 'PRODUCT_LIST_QUANTITY':
          $select_column_list .= 'p.products_quantity, ';
          break;
        case 'PRODUCT_LIST_IMAGE':
          $select_column_list .= 'p.products_image, ';
          break;
        case 'PRODUCT_LIST_WEIGHT':
          $select_column_list .= 'p.products_weight, ';
          break;
      }
    }

    //TotalB2B start
// 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'] . "' group by p.products_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'] . "' group by p.products_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 . "' group by p.products_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 . "' group by p.products_id";
      }
    }
    //TotalB2B end


    if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
...
1) Non riesco a rintracciare su quel casino quale sia la query incriminata e non credo di essere in grado di riportare la mia nella stessa forma di quelle presenti.

2) Ho guardato un po' le patch per mysql5 nel sito di osc.org e mi pare di capire (e qui non c'ho ancora guardato) che dovrei avere problemi pure nel pannello di amministrazione... :(
--
ricman
Bass
membro Master
membro Master
Messaggi: 3593
Iscritto il: 18/04/2004, 0:00
Località: Varese
Contatta:

Messaggio da Bass »

ricman ha scritto: 1) Non riesco a rintracciare su quel casino quale sia la query incriminata e non credo di essere in grado di riportare la mia nella stessa forma di quelle presenti.
Quelle che trovi tra //TotalB2B start e //TotalB2B end.
Mi pare che la patch su oscmtemplate sistemi anche le modifiche della B2B quindi puoi provare ad usare quelle semplicemente sovrascrivendole
2) Ho guardato un po' le patch per mysql5 nel sito di osc.org e mi pare di capire (e qui non c'ho ancora guardato) che dovrei avere problemi pure nel pannello di amministrazione... :(
Si, la cosa migliore che puoi fare e' applicare tutte le patch, altrimenti ci sara' sempre qualcosa che non va. O in alternativa chiedere al tuo hosting di farti un downgrade del mysql

'iao

Sergio
http://www.oscomtemplate.com - E' disponibile il nuovo pacchetto free con forum di supporto

http://www.semilandia.it
Rispondi