2015-11-18 52 views
0

編輯:非常感謝您提供所有幫助,但我可能沒有對有關NULL值的問題進行BOLD。其實我希望它也考慮空值。導致無法對空值進行計算。 我希望它在價格列之前添加空值,如果它不退出。無論如何, 是否有這樣做?謝謝你,再次抱歉。 不知道我可能會遇到這個問題。編輯:如果值不存在,則在連接語句中獲得空值

╔══════════╤════════════╤═══════════╤══════════════╗ 
║ store_id │ product_id │ now_price │ before_price ║ 
╠══════════╪════════════╪═══════════╪══════════════╣ 
║ 1  │ 2   │ 20000  │ NULL   ║ 
╟──────────┼────────────┼───────────┼──────────────╢ 
║ 2  │ 2   │ 18000  │ 21000  ║ 
╟──────────┼────────────┼───────────┼──────────────╢ 
║ 3  │ 2   │ 10000  │ NULL   ║ 
╚══════════╧════════════╧═══════════╧══════════════╝ 

我已經得到了價格的兩個表其中之一是爲現在和他們 之一是前。表結構是這樣的:

現在

╔══════════╤════════════╤═══════╗ 
║ store_id │ product_id │ price ║ 
╠══════════╪════════════╪═══════╣ 
║ 1  │ 2   │ 20000 ║ 
╟──────────┼────────────┼───────╢ 
║ 2  │ 2   │ 30000 ║ 
╟──────────┼────────────┼───────╢ 
║ 3  │ 2   │ 25000 ║ 
╚══════════╧════════════╧═══════╝ 

前:

╔══════════╤════════════╤═══════╗ 
║ store_id │ product_id │ price ║ 
╠══════════╪════════════╪═══════╣ 
║ 1  │ 2   │ 19800 ║ 
╟──────────┼────────────┼───────╢ 
║ 2  │ 2   │ 28000 ║ 
╟──────────┼────────────┼───────╢ 
║ 3  │ 2   │ 24300 ║ 
╚══════════╧════════════╧═══════╝ 

現在我想在一個表中的數據之間的差異就像 這樣:

╔══════════╤════════════╤════════════╗ 
║ store_id │ product_id │ difference ║ 
╠══════════╪════════════╪════════════╣ 
║ 1  │ 2   │ -200  ║ 
╟──────────┼────────────┼────────────╢ 
║ 2  │ 2   │ -2000  ║ 
╟──────────┼────────────┼────────────╢ 
║ 3  │ 2   │ -700  ║ 
╚══════════╧════════════╧════════════╝ 

我該怎麼做?謝謝。並btw那裏可能有一個產品 不可用在商店有可能得到一個空值爲 他們?

回答

0

你可以做一些基本的數學與SQL就像這樣:

SELECT 
    `a`.`store_id`, 
    `a`.`product_id`, 
    (`b`.`price` - `a`.`price`) AS `difference` 
FROM `table1` AS `a` 
LEFT JOIN `table2` AS `b` ON `a`.`store_id` = `b`.`store_id` 
0

爲此,您可以用一個簡單的加入

select store_id, product_id, b.price -a.price from table1 a join table2 b on a.store_id=b.store_id and a.product_id=b.product_id 
1

內連接wiil得心應手。

SELECT T1.`store_id`, 
     T2.`product_id`, 
     (T1.`price`-T2.`price`) AS Difference 
    FROM 
    price_now T2 
    INNER JOIN 
    price_before T1 ON T1.`store_id` = T2.`store_id` AND T1.`product_id` = T2.`product_id` 

希望這會有所幫助。

+0

你有沒有試過這種.Waiting更新.. –

0

嘗試以下查詢:

select 
    case when exists (select product_id from table1 a 
    join table2 b on a.product_id = b.product_id) 
    then (select store_id, product_id, (b.price - a.price) as difference 
    from table1 a 
    join table2 b on a.store_id = b.store_id 
    and a.product_id = b.product_id) 
    else null 
end 
0

嘗試......

SELECT now.store_id,now.product_id,now.price - before.price AS difference 
FROM now LEFT JOIN before ON now.store_id = before.store_id 
相關問題