php - 如何从MySQL中的单个表中选择依赖列

标签 php mysql sql

我有这样的 products_table:

prod_ID (int), sub_of (int), category (int), price (decimal 10,2), 排序(整数)

主要产品的 sub_of 设置为 0,类别设置为其他表中的某个 ID,没有设置价格。只有子产品有价格,没有类别。

我的英文不好,所以我会尝试用SQL问这个问题:

我要

SELECT * 
  FROM products_table 
    WHERE category IN (3, 158, 159, 160, 249) 
      AND sub_of = 0
      AND price >= 27 
      AND price <= 34 
  ORDER BY sort+0, sort

我该怎么做?

我在 SELECT 中尝试使用 SELECT,但没有选择正确的价格:

$where = ajax: AND price >= 27 AND price <= 34
$daOrder = SORT BY sort+0, sort

$query = "SELECT * 
FROM ".PRODUCTS_TABLE." 
WHERE prod_ID IN (
    SELECT sub_of
    FROM ".PRODUCTS_TABLE." 
    WHERE sub_of IN (
        SELECT prod_ID
        FROM ".PRODUCTS_TABLE." 
        WHERE category IN (".$allCats.") 
    ) 
    ".mysql_escape_string($where)." {$daOrder}
)";

编辑:

我需要一些类别和价格范围内的所有主要产品(sub_of=0),然后我将列出每个主要产品的所有子产品。

最佳答案

我会选择自助加入:

SELECT *
FROM products_table as main_products
LEFT JOIN products_table as sub_products
   ON sub_products.sub_of = main_products.prod_id
WHERE main_products.category IN (3, 158, 159, 160, 249)
  AND sub_products.price >= 27
  AND sub_products.price <= 34
ORDER BY sub_products.sort

关于php - 如何从MySQL中的单个表中选择依赖列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8615798/

相关文章:

php - SQL语句给我一个错误,虽然看起来很好

MySql 通过外键唯一字段

php - 基于父类别的 jQuery ajax 无限动态选择框

php - 从 php 执行时,额外的文本来自 shell_exec 命令

php - Symfony2 无法连接到 '192.168.1.50' (113) 上的 MySQL 服务器

php - 什么是正确的 MySQL 数据库语句,其中变量定义为所有行

php - 浏览器显示这种错误

MySQL:显示一个用户没有投票的随机结果

mysql - 多对多具有共同的 where 条件

mysql - 从表 B 中获取与表 A 中的多个条目(给定列表)相关的所有条目