- Posts: 10
- Thank you received: 0
Product filtering sql error
14 years 2 months ago - 14 years 2 months ago #57340
by Asty
Product filtering sql error was created by Asty
My product has two characteristics, I use two dynamic checkbox filters for filtering by those characteristics.
When i chose two options in differnt filters i have an SQL error:
Is there need more info?
When i chose two options in differnt filters i have an SQL error:
Code:
JDatabaseMySQLi::query: 1066 - Not unique table/alias: 'c' SQL=SELECT DISTINCT b.* FROM ai0zt_hikashop_product_category AS a LEFT JOIN ai0zt_hikashop_product AS b ON a.product_id=b.product_id LEFT JOIN ai0zt_hikashop_product AS c ON b.product_id=c.product_parent_id LEFT JOIN ai0zt_hikashop_variant AS choosebysize1 ON choosebysize1.variant_product_id=c.product_id LEFT JOIN ai0zt_hikashop_product AS c ON b.product_id=c.product_parent_id LEFT JOIN ai0zt_hikashop_variant AS choosebycolor2 ON choosebycolor2.variant_product_id=c.product_id WHERE b.product_published=1 AND b.product_type = 'main' AND a.category_id IN (32,33,36,38,39,40,41,31) AND (b.product_access = 'all' OR b.product_access LIKE '%,8,%') AND choosebysize1.variant_characteristic_id IN (7) AND choosebycolor2.variant_characteristic_id IN (4) ORDER BY b.product_created DESC LIMIT 0, 12
Is there need more info?
Last edit: 14 years 2 months ago by Asty.
Please Log in or Create an account to join the conversation.
14 years 2 months ago #57402
by nicolas
Replied by nicolas on topic Re: Product filtering sql error
Hi,
Please change the line:
to:
in the file administrator/components/com_hikashop/classes/filter.php and that should fix the problem.
Please change the line:
Code:
$on.=' LEFT JOIN '.hikashop_table('product').' AS c ON b.product_id=c.product_parent_id LEFT JOIN '.hikashop_table('variant').' AS '.$filter->filter_namekey.$i.' ON '.$filter->filter_namekey.$i.'.variant_product_id=c.product_id';
to:
Code:
static $done = false;
if(!$done){
$done = true;
$on.=' LEFT JOIN '.hikashop_table('product').' AS c ON b.product_id=c.product_parent_id';
}
$on.=' LEFT JOIN '.hikashop_table('variant').' AS '.$filter->filter_namekey.$i.' ON '.$filter->filter_namekey.$i.'.variant_product_id=c.product_id';
in the file administrator/components/com_hikashop/classes/filter.php and that should fix the problem.
The following user(s) said Thank You: Asty
Please Log in or Create an account to join the conversation.
Less
More
- Posts: 165
- Thank you received: 3
12 years 8 months ago - 12 years 8 months ago #139214
by jschroeder
Replied by jschroeder on topic Re: Product filtering sql error
Hi i Made the modification as suggest to have the product page sort by cheapest price first automatically as suggested in the link below.
www.hikashop.com/forum/4-how-to/57655-or...-cheapest-price.html
The problem is when i use this modification I get the below error when I select any characteristic checkbox in my filter setting,
SQL=SELECT DISTINCT b.* FROM hkta4_hikashop_product_category AS a LEFT JOIN hkta4_hikashop_product AS b ON a.product_id=b.product_id LEFT JOIN hkta4_hikashop_product AS c ON b.product_id=c.product_parent_id LEFT JOIN hkta4_hikashop_variant AS Mattress_Size2 ON Mattress_Size2.variant_product_id=c.product_id LEFT JOIN hkta4_hikashop_price AS c ON c.price_product_id=b.product_id WHERE b.product_published=1 AND b.product_type = 'main' AND a.category_id IN (21) AND (b.product_access = 'all' OR b.product_access LIKE '%,1,%') AND Mattress_Size2.variant_characteristic_id IN (6) AND c.product_quantity!=0 ORDER BY c.price_value ASC LIMIT 0, 12
I tried the solution you have posted above above because it seems like the same error, but instead when i implement the code you listed i get the following error:
Parse error: syntax error, unexpected T_CLASS, expecting T_FUNCTION in /xxx/xxxx/public_html/administrator/components/com_hikashop/classes/filter.php on line 1247
How can I fix this?...this is pretty urgent I have to have the site done by the end of the week and I need to be able to have to product listing page automatically list the product by cheapest price first and not get the above error when I filter a characteristic in the filter.
Thanks,
Josh
www.hikashop.com/forum/4-how-to/57655-or...-cheapest-price.html
The problem is when i use this modification I get the below error when I select any characteristic checkbox in my filter setting,
SQL=SELECT DISTINCT b.* FROM hkta4_hikashop_product_category AS a LEFT JOIN hkta4_hikashop_product AS b ON a.product_id=b.product_id LEFT JOIN hkta4_hikashop_product AS c ON b.product_id=c.product_parent_id LEFT JOIN hkta4_hikashop_variant AS Mattress_Size2 ON Mattress_Size2.variant_product_id=c.product_id LEFT JOIN hkta4_hikashop_price AS c ON c.price_product_id=b.product_id WHERE b.product_published=1 AND b.product_type = 'main' AND a.category_id IN (21) AND (b.product_access = 'all' OR b.product_access LIKE '%,1,%') AND Mattress_Size2.variant_characteristic_id IN (6) AND c.product_quantity!=0 ORDER BY c.price_value ASC LIMIT 0, 12
I tried the solution you have posted above above because it seems like the same error, but instead when i implement the code you listed i get the following error:
Parse error: syntax error, unexpected T_CLASS, expecting T_FUNCTION in /xxx/xxxx/public_html/administrator/components/com_hikashop/classes/filter.php on line 1247
How can I fix this?...this is pretty urgent I have to have the site done by the end of the week and I need to be able to have to product listing page automatically list the product by cheapest price first and not get the above error when I filter a characteristic in the filter.
Thanks,
Josh
Last edit: 12 years 8 months ago by jschroeder.
Please Log in or Create an account to join the conversation.
12 years 8 months ago #139242
by nicolas
Replied by nicolas on topic Re: Product filtering sql error
Hi,
The code on this current thread has no link to your issue.
I've updated the code on the other thread as that's the one that should be changed :
www.hikashop.com/forum/4-how-to/57655-or...st-price.html#139240
The code on this current thread has no link to your issue.
I've updated the code on the other thread as that's the one that should be changed :
www.hikashop.com/forum/4-how-to/57655-or...st-price.html#139240
Please Log in or Create an account to join the conversation.
Less
More
- Posts: 165
- Thank you received: 3
12 years 8 months ago - 12 years 8 months ago #139419
by jschroeder
Replied by jschroeder on topic Re: Product filtering sql error
Hi nicolas i changed the code as you suggested and thought it was working but i am still getting another SQL error now. I have a price slider in my filtering system. Whenever I select my price slider/cursor price and select the product brand i still get the following sql error:
SQL=SELECT DISTINCT b.* FROM hkta4_hikashop_product_category AS a LEFT JOIN (SELECT * FROM hkta4_hikashop_product AS product2 LEFT JOIN hkta4_hikashop_price AS price2 ON product2.product_id=price2.price_product_id WHERE (price2.price_access = 'all' OR price2.price_access LIKE '%,1,%' OR ISNULL(price2.price_access)) AND product2.product_type='main' GROUP BY product2.product_id ORDER BY price2.price_min_quantity ASC) AS b ON a.product_id=b.product_id INNER JOIN hkta4_hikashop_product_category AS Mattress_Brand1 ON Mattress_Brand1.product_id=product2.product_id AND Mattress_Brand1.category_id IN (30) LEFT JOIN hkta4_hikashop_price AS price_join ON price_join.price_product_id=b.product_id WHERE b.product_published=1 AND b.product_type = 'main' AND a.category_id IN (21) AND (b.product_access = 'all' OR b.product_access LIKE '%,1,%') AND ( ( case when b.price_currency_id IS NULL then 0 when b.price_currency_id = '1' then (b.price_value/0.73465) when b.price_currency_id IS NULL then 0 when b.price_currency_id = '2' then b.price_value end ) >= 1 ) AND ( case when b.price_currency_id IS NULL then 0 when b.price_currency_id = '1' then (b.price_value/0.73465) when b.price_currency_id IS NULL then 0 when b.price_currency_id = '2' then b.price_value end ) BETWEEN 3070 AND 20000 ORDER BY price_join.price_value ASC LIMIT 0, 12
when changing the price to filter from lowest to highest. It now interferes with the price cursor slider..How can i fix the above error
?
SQL=SELECT DISTINCT b.* FROM hkta4_hikashop_product_category AS a LEFT JOIN (SELECT * FROM hkta4_hikashop_product AS product2 LEFT JOIN hkta4_hikashop_price AS price2 ON product2.product_id=price2.price_product_id WHERE (price2.price_access = 'all' OR price2.price_access LIKE '%,1,%' OR ISNULL(price2.price_access)) AND product2.product_type='main' GROUP BY product2.product_id ORDER BY price2.price_min_quantity ASC) AS b ON a.product_id=b.product_id INNER JOIN hkta4_hikashop_product_category AS Mattress_Brand1 ON Mattress_Brand1.product_id=product2.product_id AND Mattress_Brand1.category_id IN (30) LEFT JOIN hkta4_hikashop_price AS price_join ON price_join.price_product_id=b.product_id WHERE b.product_published=1 AND b.product_type = 'main' AND a.category_id IN (21) AND (b.product_access = 'all' OR b.product_access LIKE '%,1,%') AND ( ( case when b.price_currency_id IS NULL then 0 when b.price_currency_id = '1' then (b.price_value/0.73465) when b.price_currency_id IS NULL then 0 when b.price_currency_id = '2' then b.price_value end ) >= 1 ) AND ( case when b.price_currency_id IS NULL then 0 when b.price_currency_id = '1' then (b.price_value/0.73465) when b.price_currency_id IS NULL then 0 when b.price_currency_id = '2' then b.price_value end ) BETWEEN 3070 AND 20000 ORDER BY price_join.price_value ASC LIMIT 0, 12
when changing the price to filter from lowest to highest. It now interferes with the price cursor slider..How can i fix the above error
?
Last edit: 12 years 8 months ago by jschroeder.
Please Log in or Create an account to join the conversation.
12 years 8 months ago #139531
by nicolas
Replied by nicolas on topic Re: Product filtering sql error
Hi,
Change the line:
to:
in the file administrator/components/com_hikashop/classes/filter.php and that should avoid that other issue.
Change the line:
Code:
if(preg_match('#hikashop_product AS ([a-z0-9_]+)#i',$a,$matches)){
Code:
if($a[0]!='(' && strpos($a,') AS b') && preg_match('#hikashop_product AS ([a-z0-9_]+)#i',$a,$matches)){
Please Log in or Create an account to join the conversation.
Less
More
- Posts: 165
- Thank you received: 3
12 years 8 months ago #139573
by jschroeder
Replied by jschroeder on topic Re: Product filtering sql error
Thank you so much that worked!
Please Log in or Create an account to join the conversation.
Time to create page: 0.171 seconds