Golden Basim Ответов: 1

В чем проблема в коде представления(mysql)


Привет, я использую этот код для создания представления Mysql, которое суммирует запасы товаров ..

CREATE OR REPLACE VIEW `view_items_defin` as
       SELECT items.stitems_ID,
       items.stitems_Status,
       items.stitems_Name,
       items.stitems_Pharma_ActiveIngredient,
       items.stitems_Code,
       manuf.manu_Name,
       COALESCE(ca.Amount, 0) + COALESCE(pa.Amount,0) AS Stock
FROM st_items items
LEFT JOIN (SELECT sns.stitems_ID,
                  SUM(sns.StockQnty) AS Amount
           FROM stock_noserials sns
           GROUP BY sns.stitems_ID) ca
ON ca.stitems_ID = items.stitems_ID
LEFT JOIN (SELECT pis.stitems_ID,
                  COUNT(*) AS Amount
           FROM purchases_item_seriels pis
           WHERE pis.pis_Statues IN (0, 5, 6)
           GROUP BY pis.stitems_ID) pa
ON pa.stitems_ID = items.stitems_ID

INNER JOIN `st_plug_manufacturer` AS manuf
ON items.`stitems_Manufacturer` = manuf.`manu_ID`;


это данные таблиц :
1 - Таблица stock_noserials
---------------------------------
id | stitems_ID     | StockQnty | ---
1  | 15078          | -6        | ---
2  | 15078          | 0         | ---
3  | 15078          | 0         | ---
---------------------------------


и нет никаких данных в таблице purchases_item_seriels

но результат просмотра кода :запас = -2, а не -6

Что я уже пробовал:

я пытался следовать многим пунктам, но та же проблема ..

Gerry Schmitz

Никто, кроме тебя, не знает, что там на столах. И чем сложнее вы делаете запрос, тем меньше кто-то еще может вам помочь. Вы должны проверить промежуточные результаты, прежде чем придумывать просто "кучу SQL", которую вы не понимаете.

1 Ответов

Рейтинг:
0

Mehdi Gholam

Попробуйте изменить следующую строку на что-то другое :

...
COUNT(*) AS Amount
...