Нахождение различия в количестве строки двух таблиц в MySQL

Есть несколько способов сделать это, например,

let a = {foo: "bar" };
console.log("a", a);

fs.writeFileSync("./saved_data.json", JSON.stringify(a));

let b = require("./saved_data.json");
console.log("b", b);

Вы также можете:

let b = JSON.parse(fs.readFileSync("./saved_data.json"));
console.log("b", b);

Теперь вы можете сохранять только данные , а не методы!

Если вы хотите сохранить ] object Я бы использовал глобальную переменную для хранения этого:

let globalObject = null;

someMethod.get((obj) => {
    // Save this for later use
    globalObject = obj;
})

// Later on
if (globalObject) {
    globalObject.doStuff();
}
5
задан S.L. Barth - Reinstate Monica 20 July 2012 в 17:22
поделиться

3 ответа

Попробуйте это


SELECT inv_t.product_id, inventory_total-nvl(sales_total,0)
FROM 
  (SELECT product_id, sum(quantity) as inventory_total
   FROM inventory
   GROUP BY product_id) inv_t LEFT OUTER JOIN
  (SELECT product_id, count(*) AS sales_total 
   FROM sales 
   GROUP BY product_id) sale_t
  ON (inv_t.product_id = sale_t.product_id)

Это - лучшее решение, чем несколько из других отправленных, которые не составляют то, что некоторые продукты не могут иметь никаких соответствующих строк в таблице sales. Вы хотите удостовериться, что такие продукты также обнаруживаются в результатах.

NVL является определенной для Oracle функцией, которая возвращает значение первого аргумента, если это не является пустым, в этом случае это возвращает значение второго аргумента. Существуют эквивалентные функции во всех коммерческих системах управления базами данных - можно использовать СЛУЧАЙ в MySQL к тому же эффекту.

6
ответ дан 14 December 2019 в 13:51
поделиться

Я предлагаю делать "материально-технические ресурсы" и таблицы "продаж" в представления, так, чтобы они были допускающими повторное использование, и заключительный запрос становится очень простым. Очевидно, имена полей и имена таблиц должны будут измениться для соответствия схеме.

--First view: list products and the purchased qty
create or replace view product_purchases as
select
  product_id
 ,sum(purchased_qty) as purchased_qty
from
  purchases
group by
  product_id;

--Second view: list of products and the amount sold    
create or replace view product_sales as
select
  product_id
 ,count(*) as sales_qty
from
  sales
group by
  product_id;

--after creating those two views, run this query:
select
  pp.product_id
 ,pp.purchased_qty - ps.sales_qty as on_hand_qty
from
  product_purchases pp
 ,product_sales ps
where ps.product_id = pp.product_id;
0
ответ дан 14 December 2019 в 13:51
поделиться
SELECT product AS prd, 
SUM(quantity) - 
  IFNULL((SELECT COUNT(*)
   FROM sells
   WHERE product = prd 
   GROUP BY product), 0)
AS stock 
FROM bought
GROUP BY product;

Этот также работает, когда проданное количество 0.

0
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: