Я пытаюсь написать запрос в MySQL с выходом на PHP, но это довольно сложно.Не получается получить желаемый результат из запроса 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, это не должно давать Fruitbasket1 в результате, если другая часть, а именно 5 виноград, не указаны клиентом.
Это заявление не приносит никаких результатов, к сожалению. –
@RudyvanSloten вы можете создать скрипку, которая воспроизводит проблему? – FuzzyTree
+1. @RudyvanSloten: Учитывая данные образца, мы ожидаем, что этот запрос вернет ровно нулевые строки, потому что нет «пакета», который имеет только «2 Apple» и «1 Pear». Чтобы получить этот запрос для возврата строки, нам также нужно добавить: ** 'или (amount = 5 и product = 'Grape')' ** и изменить оба параметра ** '= 2' ** на * * '= 3' **, чтобы получить« матч »' Fruitbasket1'. Я считаю, что запрос, предоставленный FuzzyTree, соответствует спецификации. – spencer7593