Reputation: 19
Iam working with joomla joomshopping component and now I faced a complicated problem. I need to select product from database which are in range of extra_field condition what imean by that.
We have two tables
jshopping_products
product_id | product_name | extra_field_1 | extra_field_2
1 | my_product | 1 | 2
2 | my_product2 | 1 | 3
3 | my_product3 | 4 | 3
extra_field_values
id | field_id | name
1 | 1 | 100
2 | 2 | 200
3 | 2 | 300
4 | 1 | 150
And i want to select all products in 100-120 range for extra_field_1 and 200-205 for extra_field_2 so result should be first product product
my sql which i tried look like this
$sql = mysql_query("SELECT a.* FROM jshopping_products a, jshopping_products_extra_field_values b WHERE (b.name >= 100 AND b.name <= 120 AND there is a problem ");
How can i pair this two tables?
EDITED *******
$query = "
SELECT
".$prefix."jshopping_products.*
FROM
".$prefix."jshopping_products
JOIN ".$prefix."jshopping_products_extra_field_values field_2 ON ".$prefix."jshopping_products.extra_field_2 = field_2.id
JOIN ".$prefix."jshopping_products_extra_field_values field_7 ON ".$prefix."jshopping_products.extra_field_7 = field_7.id
JOIN ".$prefix."jshopping_products_extra_field_values field_8 ON ".$prefix."jshopping_products.extra_field_8 = field_8.id
JOIN ".$prefix."jshopping_products_extra_field_values field_9 ON ".$prefix."jshopping_products.extra_field_9 = field_9.id
JOIN ".$prefix."jshopping_products_extra_field_values field_10 ON ".$prefix."jshopping_products.extra_field_10 = field_10.id
JOIN ".$prefix."jshopping_products_extra_field_values field_11 ON ".$prefix."jshopping_products.extra_field_11 = field_11.id
JOIN ".$prefix."jshopping_products_extra_field_values field_12 ON ".$prefix."jshopping_products.extra_field_12 = field_12.id
JOIN ".$prefix."jshopping_products_extra_field_values field_13 ON ".$prefix."jshopping_products.extra_field_13 = field_13.id
WHERE
field_10.`name_cs-CZ` BETWEEN 0 and 999999999
";
thanks to respones i managed to make this anyway it gives me only 1 product and i know for sure in extra_field_10 there is about 100 values in range of 60-10000 with over 200 products
Upvotes: 0
Views: 117
Reputation: 5919
SELECT distinct jshopping_products.*
FROM jshopping_products
JOIN extra_field_values field_1 ON jshopping_products.extra_field_1 = field_1.id
JOIN extra_field_values field_2 on jshopping_products.extra_field_2 = field_2.id
WHERE
field_1.name BETWEEN 100 AND 120 AND
field_2.name BETWEEN 200 AND 205
Upvotes: 1
Reputation: 782584
You have to join with the extra_field_values
table twice, once for each column in jshopping_products
that you're joining with it
SELECT a.*
FROM jshopping_products a
JOIN jshopping_products_extra_field_values e1 ON a.extra_field_1 = e1.id
JOIN jshopping_products_extra_field_values e2 ON a.extra_field_2 = e2.id
WHERE e1.name BETWEEN 100 AND 120
AND e2.name BETWEEN 200 AND 205
GROUP BY a.product_id
Upvotes: 0