Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nieznana kolumna 'p.products_id' - a istnieje i znana :/
Forum PHP.pl > Forum > Bazy danych > MySQL
putrycydes
hej mam prośbę, próbuję wyjarzyć czemu niby to zapytanie nie jest ok, tym bardziej że na jednej bazie działa a na nowszej już nie (?) ale to mnie przerasta
  1. SELECT p.products_fsk18, p.products_shippingtime, p.products_model, p.products_ean, pd.products_name, m.manufacturers_name, p.products_quantity, p.products_image, p.products_weight, pd.products_short_description, pd.products_description, p.products_id, p.manufacturers_id, p.products_price, p.products_vpe, p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id 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 = '3' AND p2c.categories_id = '5' ORDER BY p.products_price ASC

baza twierdzi:
1054 - Nieznana kolumna 'p.products_id' w on clause
oczywiście p.products_id (czyli products.products_id istnieje ) qwa!
kurt
Mam to samo. Jak mniemam kolega też ćwiczy oscommerce sad.gif
Polecam artykulik : http://www.oscommerce.com/about/news,121
podobno problem występuje dla wersji mysql >=5.0.12

Po naszemu rozwiązanie problemu jest tutaj : http://www.oscommerce.pl/viewtopic.php?t=1...t=p.products_id
nevt
jak jest błąd w składni, to i go wywala... wystarczy dodać nawiasy i wszystko będzie śmigać:
p2c.products_id
  1. SELECT p.products_fsk18, p.products_shippingtime, p.products_model, p.products_ean, pd.products_name, m.manufacturers_name, p.products_quantity, p.products_image, p.products_weight, pd.products_short_description, pd.products_description, p.products_id, p.manufacturers_id, p.products_price, p.products_vpe, p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id 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 = '3' AND p2c.categories_id = '5' ORDER BY p.products_price ASC;
kiedy nie ma nawiasów, to wyraźnie widać, że LEFT JOIN specials w wyrażeniu:

... 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 ...

odnosi się do tabelki product_to_categories p2c gdzie, zgodnie z treścią komunikatu o błędzie nie ma pola p.products_id.

powodzenia.
kurt
Nevt, ten błąd składni dotyczy mysql >=5.0.12, we wcześniejszych wersjach wszystko chodziło ok. Dodanie nawiasów niczego nie załatwia, onieczne jest przebudowanie całego zapytania. Pole products_id występuje w tabeli products_to_categories.
nevt
kurt, niewłaściwie interpretujesz zmiany wprowadzone w MySQL. Przedstawiony na początku zapis jest ewidentnie błędny z punktu widzenia składni języka, ale błąd w MySQL ver. < 5.0.12 dopuszczał taką nieprawidłową składnię (tak jak firefox grzecznie sam domyka nie domknięte tagi w html - zupełnie niepotrzebnie zresztą... ). Ale programiści MySQL połapali się i od wersji 5.0.12 w górę usunięto błąd dopuszczający wadliwą składnię. Co do wypowiedzi na temat działania nawiasów - sprawdź zanim skomentujesz. Proponowane przeze mnie rozwiązanie działa, i oprócz dodania tych nawiasów nic więcej nie trzeba modyfikować w tym zapytaniu. Czytałem artykuł który podałeś - tam faktycznie kompletnie przebudowali to zapytanie, ale to wcale nie oznacza, że nie istnieją inne rozwiązania tego problemu.

najlepiej, żeby wypowiedział się autor tematu... pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.