php - 在另一个表中按条件选择产品

标签 php mysql

我正在使用 joomla joomshopping 组件,现在我面临一个复杂的问题。我需要从数据库中选择处于 extra_field 条件范围内的产品,这是什么意思。

我们有两张 table

jshopping_产品

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

额外字段值

id         | field_id     | name          
1          | 1            | 100
2          | 2            | 200
3          | 2            | 300 
4          | 1            | 150

我想为 extra_field_1 选择 100-120 范围内的所有产品,为 extra_field_2 选择 200-205 范围内的所有产品,因此结果应该是第一个产品

我尝试过的 sql 看起来像这样

$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 ");

如何将这两个表配对?

已编辑********

$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
";

感谢回复,无论如何我设法做到了这一点,它只给了我 1 个产品,而且我确信在 extra_field_10 中大约有 100 个值在 60​​-10000 范围内,有超过 200 个产品

最佳答案

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

关于php - 在另一个表中按条件选择产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24009613/

相关文章:

php sql - 了解您无法在 FROM 子句中指定更新目标表

mysql - 在输出中获得特定结果

sql - 为什么这个查询什么都不返回?

php - MySQL:添加创建和修改的字段

mysql - 我如何按不同值的计数获取值顺序

javascript - jQuery load() 方法

php - 为什么我无法取消设置 foreach 循环中通过引用传递的数组项?

mysql - SHOW 上下文中的 FROM 与 IN

php - FedEx express 运输整合

javascript - 如果使用 jquery/javascript 将 url 设置为特定值,如何隐藏和显示 div?