我想在PHP中使用输出在MySQL中编写查询,但它证明相当困难。无法从MySQL查询中获得期望的结果
我有3列的表(是的,我知道这个数据库布局是不是最好的,但我不能改变这一点,客户有使用此数据库与此完全相同的布局等软件)
Amount - Product - Package
2 - Apple - Fruitbasket1
1 - Pear - Fruitbasket1
5 - Grape - Fruitbasket1
2 - Apple - Fruitbasket2
1 - Pear - Fruitbasket2
9 - Banana - Fruitbasket2
到目前为止,我想出了这一点:
SELECT package
FROM `data`
WHERE package IN
(
SELECT package
FROM `data`
WHERE product = 'apple' AND amount = '2'
)
AND package IN
(
SELECT package
FROM `data`
WHERE product = 'pear' AND amount ='1'
)
AND package IN
(
SELECT package
FROM `data`
WHERE product = 'grape' AND amount = '5'
)
LIMIT 0,1
的问题是,当客户将填写“苹果”和“2”的形式,它会返回一个包含2个苹果的所有篮子。我需要的是一份声明,它只接受确切的产品和金额,以返还那些成分所属的篮子,或者根本没有。
即使1个梨和2个苹果在Fruitbasket1中,但如果其他部分(即5个葡萄)未被客户指定,它也不应该给Fruitbasket1。
这个声明不会产生任何结果,悲哀。 – 2014-09-23 14:38:52
@RudyvanSloten你可以创建一个重现问题的小提琴吗? – FuzzyTree 2014-09-23 14:42:30
+1。 @RudyvanSloten:给出样本数据,我们希望这个查询返回0行,因为没有'package'只有'2 Apple''和''1 Pear''。为了让这个查询返回一行,我们还需要添加:**或(amount = 5和product ='Grape')**,并将**'= 2 ** **改为* *'= 3' **使它与“Fruitbasket1”匹配。我相信FuzzyTree提供的查询符合规范。 – spencer7593 2014-09-23 14:46:42