![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 164 Pomógł: 3 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Pobieram z kilku tabel produkty, producentów i opisy produktów w 2 językach. Pobieram obie wersje językowe opisów bo póki co wersji obcojęzycznych jest znikoma ilość i to co się da tłumaczę przez php z automatu. Problem: Jak wykluczyć w zapytaniu polską wersję opisu produktu jeśli istnieje obcojęzyczna ? W tabeli 'produkty' każdy produkt ma unikalny ID. W tabeli 'opisy' każdy opis ma odpowiedni ID produktu i oprócz tego oznaczenie języka np. 'pl', 'en'. Czy rozwiązaniem byłoby podzapytanie w rodzaju [SQL] pobierz, plaintext
Musiałbym wtedy wywalić z tablicy (uzyskanej przez while($r = mysql_fetch_array($rekord)){}) te rekordy z opisem 'pl', które mają swój odpowiednik 'en'... Jak ? ? Proszę o pomoc, podpowiedzi. Ten post edytował kleszczoscisk 4.09.2009, 14:58:08 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 164 Pomógł: 3 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie wyszło kolosalne, a błąd wyskoczył taki:
Kod This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' Kod $rekord = mysql_query("(SELECT prod_translations.pid , prod_translations.product_name , prod_translations.lang AS jezyk , prod_translations.description , prod_translations.active, prod_translations.isdefault , products.product_id, products.category_id, products.producer_id, products.in_stock, products.gfx, products.file, products.add_date, products.edit_date, products.price, products.promo, products.weight, products.views, products.category2, products.category3, products.sort, products.products_related, products.other_price, products.product_code, gfx.gfx_id , gfx.prod_id, gfx.name AS nazwapliku , gfx.main_gfx , gfx.unic_name , gfx.gfx_sort , manufacturers.producent_id , manufacturers.name AS autor , manufacturers.info , manufacturers.info_eng , manufacturers.web FROM `manufacturers` LEFT JOIN `products` ON manufacturers.producent_id = products.producer_id LEFT JOIN `prod_translations` ON products.product_id = prod_translations.pid LEFT JOIN `gfx` ON products.product_id = gfx.prod_id WHERE manufacturers.isdefault LIKE '%$art%' AND prod_translations.lang = 'en' AND gfx.main_gfx = 1 AND products.in_stock > 0 ORDER BY products.add_date DESC LIMIT ".($pagz*$ilez).", $ilez) UNION (SELECT prod_translations.pid , prod_translations.product_name , prod_translations.lang AS jezyk , prod_translations.description , prod_translations.active, prod_translations.isdefault , products.product_id, products.category_id, products.producer_id, products.in_stock, products.gfx, products.file, products.add_date, products.edit_date, products.price, products.promo, products.weight, products.views, products.category2, products.category3, products.sort, products.products_related, products.other_price, products.product_code, gfx.gfx_id , gfx.prod_id, gfx.name AS nazwapliku , gfx.main_gfx , gfx.unic_name , gfx.gfx_sort , manufacturers.producent_id , manufacturers.name AS autor , manufacturers.info , manufacturers.info_eng , manufacturers.web FROM `manufacturers` LEFT JOIN `products` ON manufacturers.producent_id = products.producer_id LEFT JOIN `prod_translations` ON products.product_id = prod_translations.pid LEFT JOIN `gfx` ON products.product_id = gfx.prod_id WHERE manufacturers.isdefault LIKE '%$art%' AND prod_translations.lang = 'pl' AND gfx.main_gfx = 1 AND products.in_stock > 0 AND products.product_id NOT IN (SELECT products.product_id FROM `manufacturers` LEFT JOIN `products` ON manufacturers.producent_id = products.producer_id LEFT JOIN `prod_translations` ON products.product_id = prod_translations.pid LEFT JOIN `gfx` ON products.product_id = gfx.prod_id WHERE manufacturers.isdefault LIKE '%$art%' AND prod_translations.lang = 'en' AND gfx.main_gfx = 1 AND products.in_stock > 0 ORDER BY products.add_date DESC LIMIT ".($pagz*$ilez).", $ilez) ORDER BY products.add_date DESC LIMIT ".($pagz*$ilez).", $ilez)") or die(mysql_error()); Tak myślę, że gdyby jednak zabrać się do tego przez przefiltrowanie wyników to może nadawać się będzie array_filter. Funkcja do której by się odwoływała musiałaby szukac w kluczu $w['id'] duplikatów i spośród nich usuwać elementy, które mają w kluczu $w['lang'] pl ... ? Help ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 17:57 |