我有这样的 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/