2014-12-16 3 views
1

У меня есть таблица, которая имеет 3 Описание продуктов (Product_1, Product_2, Product_3) и каждый продукт некоторой ссылки и количество с расположением каждой строкисумма нескольких продуктов с показом строками, связанных с использованием массива

Iwant показать все строки для product_1, product_2, product_3 которых сумма каждого продукта на переменном массив в качестве примера

$globalProduct = array(21000, 18000, 1000); 
 

 
$sumProduct_1 = $globalProduct[0]; 
 
$sumProduct_2 = $globalProduct[1]; 
 
$sumProduct_3 = $globalProduct[2];

Ihave запросы MySQL для одного продукта, но я нашел его diffic ult для использования 3 продуктов.

этот запрос для одного продукта, он работает правильно

SET @runtot=0; 
 
SELECT p_reference, p_id, p_description, p_quantity, p_location, (@runtot := @runtot + p_quantity) AS runningTotal 
 
FROM (
 
    SELECT p_reference, p_id, p_description, p_quantity, p_location 
 
    FROM product_table 
 
    WHERE p_description = 'product_1' 
 
    ORDER BY p_reference, p_quantity 
 
) AS l 
 
WHERE @runtot <= 21000;

этот последующий исходный код для создания Product_table

CREATE TABLE IF NOT EXISTS `product_table` (
 
`p_id` int(11) NOT NULL, 
 
    `p_description` varchar(50) NOT NULL, 
 
    `p_reference` varchar(25) NOT NULL, 
 
    `p_location` varchar(25) NOT NULL, 
 
    `p_quantity` float(11,3) NOT NULL 
 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ; 
 

 
-- 
 
-- Contenu de la table `product_table` 
 
-- 
 

 
INSERT INTO `product_table` (`p_id`, `p_description`, `p_reference`, `p_location`, `p_quantity`) VALUES 
 
(1, 'Product_1', '1A00001', 'QD01', 7000.000), 
 
(2, 'Product_1', '1A00001', 'QD02', 7000.000), 
 
(3, 'Product_1', '1A00007', 'QD03', 7000.000), 
 
(4, 'Product_1', '1A00008', 'QD04', 7000.000), 
 
(5, 'Product_2', '1A00002', 'AB01', 6500.000), 
 
(6, 'Product_2', '1A00004', 'AB02', 6500.000), 
 
(7, 'Product_2', '1A00005', 'AB03', 6500.000), 
 
(8, 'Product_2', '1A00003', 'DB01', 6500.000), 
 
(9, 'Product_2', '1A00009', 'DB02', 6500.000), 
 
(10, 'Product_2', '1A00002', 'DB03', 6500.000), 
 
(11, 'Product_2', '1A00002', 'DB04', 6500.000), 
 
(12, 'Product_3', '1A00010', 'FD01', 5000.000), 
 
(13, 'Product_3', '1A00015', 'DS02', 5000.000), 
 
(14, 'Product_3', '1A00017', 'DS03', 5000.000), 
 
(15, 'Product_3', '1A00018', 'DS04', 5000.000);

ответ

0

Возможно, это так просто?

SELECT 
    p_description, 
    sum(p_quantity) AS runningTotal 
FROM 
    product_table 
GROUP BY 
    p_description 
+0

Эта функция дает нам сумму poduct_1 + product_2 + product_3 <= 21000, но я хочу суммировать каждый продукт <= 21000 с показать все заинтересованные – phptraining

+0

строк но не существует суммы каждого продукта, я хочу использовать этот массив. это пример. $ globalProduct = array (21000, 18000, 1000); $ sumProduct_1 = $ globalProduct [0]; $ sumProduct_2 = $ globalProduct [1]; $ sumProduct_3 = $ globalProduct [2]; – phptraining

+0

См. Мой обновленный ответ выше – Benvorth

0

Хорошо, немного сложнее, чем:

SELECT * FROM 
(
    SELECT 
    a.*, c.p_description as nextProduct, 
    (@gc := @gc + a.p_quantity) as uu, if(a.p_description != c.p_description, @gc := 0, 1) as `reset` 
    FROM 
    (SELECT @gc := 0) as b, product_table as a 
    LEFT OUTER JOIN product_table as c ON a.p_id = c.p_id -1 
) as a 
WHERE uu <= 21000 
Смежные вопросы