請問如何在查詢MYSQL時做加減的動作
最後能得到
地點1=-10
地點2=10
然後顯示在螢幕上該選擇哪個欄位名稱
chingfeng提到:
一張訂單 一批貨物 貨物狀態 所屬倉庫
wonton提到:
(ifnull(ci.input, 0) - ifnull(co.output, 0))
SELECT warehouse_id, warehouse_name, (ifnull(ci.all_in, 0) - ifnull(co.all_out, 0)) warehouse_amount, (ifnull(ci.A01_in, 0) - ifnull(co.A01_out, 0)) A01_amount, (ifnull(ci.A02_in, 0) - ifnull(co.A02_out, 0)) A02_amount, FROM warehouse LEFT JOIN ( SELECT car_in, SUM(amount) all_in, SUM(A01) A01_in, SUM(A02) A02_in FROM car_save GROUP BY car_in ) ci ON ci.car_in = warehouse.warehouse_id LEFT JOIN ( SELECT car_out, SUM(amount) all_out, SUM(A01) A01_out, SUM(A02) A02_out FROM car_save GROUP BY car_out ) co ON co.car_out = warehouse.warehouse_id
用 warehouse 當主表,JOIN 所有進 + 所有出,共兩個總量的 Table,然後作加減即可。
<pre class="c" name="code">SELECT warehouse_id, warehouse_name, (ci.input - co.output) warehouse_amount
FROM warehouse
LEFT JOIN (SELECT car_in, SUM(amount) input FROM car_save GROUP BY car_in) ci ON ci.car_in = warehouse.warehouse_id
LEFT JOIN (SELECT car_out, SUM(amount) output FROM car_save GROUP BY car_out) co ON co.car_out = warehouse.warehouse_id
謝謝您
最後的結果是我要的沒錯
不好意思我是初學者剛用Dreamweaver
大大一下多了好多我沒見過的語法
SELECT 的語法內 (ci.input - co.output) 這是什麼意思呢?
LEFT JOIN (SELECT car_in, SUM(amount) input FROM car_save GROUP BY car_in) ci ON ci.car_in = warehouse.warehouse_id
製作一個左表 計算car_in內各倉庫的數量
之後的ci ON car_in = warehouse.warehouse_id 這是什麼意思呢?
所以您po的最後一張圖表 是運算出來的我看不到的 還是我要自己去設一張表讓程式去填資料
一下無法消化 還請大大解釋一下 謝謝
SELECT 的語法內 (ci.input - co.output) 這是什麼意思呢?
底下 JOIN 了兩張表,
第一張表我命名為 ci, 用來計算 car_in 的總量, 總量我命名為 input
第二張表我命名為 co, 用來計算 car_out 的總量, 總量我命名為 output
這兩張表 JOIN 進來後, 就可以拿來作加減, 所以 SELECT (ci.input - co.output)
ci ON car_in = warehouse.warehouse_id 這是什麼意思呢?
ci 只是把 (SELECT car_in, SUM(amount) input FROM car_save GROUP BY car_in) 這一段產生的資料作一個命名而已, 後面的 ON 是 JOIN 的資料表和主表 warehouse 的 key 值對照
最後一張圖表, 是實際執行這段 SQL 語句的結果, 我把你討論區的兩張表建入我的資料庫中, 然後執行我貼的 SQL 語句, 就產出這個結果
建議買本 SQL 的書或去上個資料庫的課程吧, 勞動部補助的在職課程不少
謝謝您詳細的解說
問題1.2我看懂了
所以問題3是執行的結果.實際上是不會出現那張表的.對嗎?
還是說我一樣要新增一個表warehouse讓程式算出的值去填表?
不好意思請見諒.我不是偷懶 書我買了好幾本.GOOGLE也打到快爛了
書教的都是很基本的只查到SUM沒寫說怎麼加減
最後還是謝謝您詳細的解答
插入Dreamweaver出錯了
<?php
mysql_select_db($database_changli, $changli);
$query_AA = "SELECT warehouse_id, warehouse_name, (ci.input - co.output) warehouse_amount FROM warehouse LEFT JOIN (SELECT car_in, SUM(amount) input FROM car_save GROUP BY car_in) ci ON ci.car_in = warehouse.warehouse_id LEFT JOIN (SELECT car_out, SUM(amount) output FROM car_save GROUP BY car_out) co ON co.car_out = warehouse.warehouse_id";
$AA = mysql_query($query_AA, $changli) or die(mysql_error());
$row_AA = mysql_fetch_assoc($AA);
$totalRows_AA = mysql_num_rows($AA);
?>
錯誤訊息
Unknown column 'amount' in 'field list'
既然這樣!
我想說一下,你是否要給該訂單一個欄位.
叫做訂單狀態,或者是貨物狀態,來做貨物目前的狀態
EX:出庫 運送 已入庫
SUM是對的,友情提示 WHERE,GROUP BY
目前沒有使用狀態攔 因為單子都是簽收後才登記
WHERE,GROUP BY 是使用群組嗎
那群組運算的語法怎麼寫
GROUP BY 1 - GROUP BY 2
應該沒我想的這麼簡單吧
SELECT car_out, SUM(amount)
FROM car_save
GROUP BY car_out;
這樣好像只能算出1.2載出的數量
kushu提到:
SELECT car_out, SUM(amount)
FROM car_save
GROUP BY car_out;
那car_in