我正在尝试在MySQL中编写查询,并在PHP中输出结果,但事实证明这相当困难.
我有一个包含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个苹果的篮子.我需要的是一种声明,该声明将只接受确切的产品及其数量,以退还该成分所属的一个篮子,或者完全不退.
因此,即使Fruitbasket1中有1个梨和2个苹果,但如果客户未指定其他部分(即5个葡萄),也不应将结果作为Fruitbasket1.