У меня есть база данных SQL, и я хочу получить записи до тех пор, пока не будет удовлетворено количество запросов клиента. Вот что я имею в виду. Таблица запросовFetch Row до тех пор, пока количество не будет выполнено
Product Quantity Price
-----------------------
Apple 10.0 5.00
вот SQL-запрос, чтобы получить матчи:
SELECT c.FName,
p.ProductName,
s.Description,
s.Quantity,
s.Price
FROM requests r
INNER JOIN sellers s
ON r.ProductID = s.ProductID
INNER JOIN products p
ON p.ProductID=s.ProductID
INNER JOIN customers c
ON c.ID=s.C_ID
WHERE r.C_ID = 3 AND r.matchType='Price'
ORDER BY s.Price ASC
И вот результат:
FName | ProductName | Description | Quantity | Price
--------------------------------------------------------------------------=
compny1 Apple royal apples fm appleco. 5.0 5.00
daz Apple sweet apples 6.0 5.50
company2 Apple Apples yum 8.0 9.00
Я хочу, чтобы отобразить полное требуемое количество 10кг, выбрав строки и обновление базы данных, то есть выход должен быть:
apples @5kg from compny1 = 5.00
apples @5kg from daz = 5.50
total = 10.50
База данных должна показывать количество «Daz», равное 1,0 кг слева. Тем не менее, я продолжаю сосать это. Я попытался сделать следующее:
while ($rows1 = mysql_fetch_assoc($queryQuantity2)){
if($rows1['Quantity']==$quantityRequested){ //If the first row = 10KG output only this row.
echo $rows1['FName'];
echo $rows1['NameProduct'];
echo $rows1['Quantity'];
echo $rows1['Price'];
}else{
//stuck here check the next rows and see there is 6KG's .. We need 10KG Requested - 5KG from daz(row1)
// -Remaining amount left(i.e.5KG)
//hence, print the output specified above and UPDATE Database where quantity has been reduced by X amount.
}
Хорошо, в чем проблема. Мне нужно «Подготовить» запрошенный 10кг запрос.
Теперь «Самый дешевый» способ сделать это - отсортировать доступные совпадения по Asc Price, которые у меня есть.
Нет, мы видим, что первая строка показывает «compny1», продавая 5KG за 5,00 фунтов ... Итак, нам нужно 10KG, поэтому мы показываем строку 1 .. Далее, поскольку мы еще не встретили требования 10KG (все еще нужно еще 5 кг), мы смотрим на второй ряд. Мы видим, что «daz» продает 6 кг. но нам нужно всего лишь 5more KG, чтобы удовлетворить спрос 10KG. Следовательно, я хочу ... UPDATE таблицу, чтобы первая запись была скопирована в другую таблицу, а вторая строка обновлена до 1.0kg (6KG-5KG). И, следовательно, дисплей клиента: Ваш 10кг можно приобрести
compny1 [email protected]
daz [email protected]
------
Total £10.50
Итак, это моя проблема. Я не знаю, как продолжать проверять строки до тех пор, пока не будет выполнено требуемое количество. Думаю, мне нужен какой-то «счетчик», который отслеживает, сколько добавлено количество добавлено «До сих пор», а затем проверить, сколько еще потребуется от следующей строки.
Итак, вы хотите остановить свои возвращенные результаты, как только вы встретите определенные критерии, в этом случае количество 10? Как вы получаете 5.50 для возврата ядов с daz с 6 из 5,50 - 5 должно стоить 4,58? Просто пытаюсь понять ваши проблемы. – sgeddes
@sgeddes Да. Как только количество было удовлетворено (10 кг в этом случае), спрос был удовлетворен, поэтому больше строк не должно отображаться. Да, жаль насчет калькуляции затрат, которая является всего лишь образцом и тестовыми данными. После того, как я поменю его на цену за кг, а затем отсортирую список. – Jsmith