データベースは 3 つのテーブルに分割されており、kw、vp、st で始まる 3 つのテーブルはストレージを表し、テーブルはst で始まるはアウトバウンド要件を表します。倉庫保管時には、最初の 2 つのテーブルが共同で照会され、倉庫に保管されている cust_no と Lotno が取得されます。在庫番号と、対応する cust_no および在庫番号は、ソート関係によって決まります。テーブル st のフィールド c1_time、c_type、および adress、在庫番号が順番に配置され、ロット番号が先入れ先出しソート規則に従って在庫番号の対応する数量と照合されます。それが等しい場合、一致したロット番号は次のようになります。除外され、数量が要件を満たすまで、新しいロット番号が次の在庫番号と照合されます。以下同様です。数量の結果は、st テーブルの mount*snp の結果です。これは、受信テーブルからの情報を走査することで実現できますか?
$sql = "select CONCAT(SUBSTRING_INDEX(a.cust_no,' ',1),SUBSTRING_INDEX(a.cust_no,' ',-1)) as cust_no,b.lotno as lotno,count(b.lotno) as lotno_count from `kw_manage` as a,`vp_barcode_2d_y` as b where a.packageno = b.packageno group by lotno order by lotno asc";$result = mysql_query($sql);$ars =array();while($row = mysql_fetch_array($result,MYSQL_ASSOC)){ $ars[] = $row;}var_dump($ars);得到的结果:array(1) { [0]=> array(3) { ["cust_no"]=> string(10) "237033AW0A" ["lotno"]=> string(4) "3207" ["lotno_count"]=> string(3) "480" } }
問題を単純化できない場合 (問題の核心を抽出する)
誰もそれを見る時間がないと思います
問題を単純化できない場合 (問題の核心を抽出し、コアデータのみを保持します)
誰も見る時間がないと思います
私はそれを整理しました:
//按照先入先出得到已入库的零件号码及产品批次$sql = "SELECT a.cust_no, a.lotno, count( a.lotno ) FROM vp_barcode_2d_y AS a RIGHT JOIN kw_manage AS b ON a.packageno = b.packageno GROUP BY a.lotno ORDER BY a.lotno, a.cust_no ASC";$result = mysql_query($sql);while($v1 = mysql_fetch_array($result,MYSQL_ASSOC)){ var_dump($v1);}/*array(3) { ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count( a.lotno )"]=> string(3) "480"}array(3) { ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count( a.lotno )"]=> string(3) "180"}*///按照先纳时,再到运地,再车型的顺序求得出库依赖的结果:$sql2 = "SELECT stock_no, cust_no, mount * snp AS total FROM `stock_detail` ORDER BY arr_time, adress, c_type ASC";$result2 = mysql_query($sql2);while($v2 = mysql_fetch_array($result2,MYSQL_ASSOC)){ var_dump($v2);}/*array(3) { ["stock_no"]= string(13) "SU13061301011" ["cust_no"]= string(10) "237033AW0A" ["total"]= string(3) "195"}array(3) { ["stock_no"]= string(13) "SU13061301011" ["cust_no"]= string(10) "237033AW0A" ["total"]= string(3) "195"}array(3) { ["stock_no"]= string(13) "SU13061301016" ["cust_no"]= string(10) "23703JX30A" ["total"]= string(2) "15"}array(3) { ["stock_no"]= string(13) "SU13061301016" ["cust_no"]= string(10) "23703JX30A" ["total"]= string(2) "30"}array(3) { ["stock_no"]= string(13) "SU13061301016" ["cust_no"]= string(10) "23703EX80A" ["total"]= string(3) "105"}array(3) { ["stock_no"]= string(13) "SU13061301016" ["cust_no"]= string(10) "23703EX80A" ["total"]= string(3) "120"}array(3) { ["stock_no"]= string(13) "SU13061301033" ["cust_no"]= string(10) "237033AW0A" ["total"]= string(3) "210"}array(3) { ["stock_no"]= string(13) "SU13061301032" ["cust_no"]= string(10) "237033AW0A" ["total"]= string(3) "255"}*/
これは今でも同じではありませんか?
あなたが提供した 2 つのデータについて、あなた以外の誰が誰が誰であるかを知ることができますか?
これは今でも同じではありませんか?
あなたが提供した 2 つのデータについて、あなた以外の誰が誰が誰であるかを知ることができますか?
データベースで結合クエリを使用すると、関係性は照合できますが、数量は指定できません このように書くことは可能でしょうか?
りー
これは今も同じではないですか?
あなたが提供した 2 つのデータについて、あなた以外の誰が誰が誰であるかを知ることができますか?
この方法で対応できますか? Stock_no の値はすでにわかっているので、対応する数量値 (mount*snp の結果) を取得するだけで済みます。その後、対応する数量値の結果を使用して、データベース データ内の対応するロット番号と先入れ法で照合します。 、先出し順。このテーブルに従って照合します:
select c.stock_no,a.packageno,a.lotno from vp_barcode_2d_y as a left joinkw_manage as b on a.packageno = b.packageno left join stock_detail as c on b.cust_no = concat(left(c.cust_no,5),' ',right(c.cust_no,5))where c.stock_no = 'SU13061301011' group by a.barcode order by a.lotno,a.packageno asc 样式如下:== 转存表中的数据 vp_barcode_2d_y |SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219001|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219002|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207|SU13061301011|VP3.0 130219003|3207....//得到的结果是:显示行 0 - 29 (540 总计, 查询花费 0.0072 秒)
在庫テーブルに出荷フィールドを追加します
入荷の場合、このフィールドは 0 です
出荷の場合、このフィールドは出荷数量になります
入荷数量 - 出荷数量 = バッチの残りの数量
そして
select * from tbl_name
select a.packageno,a.lotno from vp_barcode_2d_y as a left joinkw_manage as b on a.packageno = b.packageno left join stock_detail as c on b.cust_no = concat(left(c.cust_no,5),' ',right(c.cust_no,5))where c.stock_no = 'SU13061301011' group by a.barcode order by a.lotno,a.packageno asc 样式如下:== 转存表中的数据 vp_barcode_2d_y |VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219001|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219002|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207|VP3.0 130219003|3207....//得到的结果是:显示行 0 - 29 (540 总计, 查询花费 0.0072 秒)
id num 1 20 2 20 3 30
在庫テーブルに発送フィールドが追加されます
このフィールドは、倉庫 0
倉庫から出荷する場合、このフィールドは出荷数量です
入荷数量 - 出荷数量 = バッチの残り数量
そして
select * from tbl_name
id num c 1 20 20 2 20 40 3 30 70
id num 1 20 2 20 3 30
c列は、現在のレコードのnum列のid順の合計を表します
id=1 20
id=2 20+20=40
id=3 20+20+30=70
库存表增加一个出库字段
入库时该字段为0
出库时该字段为已出库数量
入库数量 - 出库数量 = 该批次剩余数量
又
设 select * from tbl_name
id num 1 20 2 20 3 30
id num c 1 20 20 2 20 40 3 30 70
这就需要编程处理了,毕竟在查询时是无法把一条记录拆成两条记录的
这就需要编程处理了,毕竟在查询时是无法把一条记录拆成两条记录的
像这样,入库的packageno对应的lotno批次及数量,导出了结果:
$sql = "select a.packageno,b.cust_no,b.lotno,count(b.lotno) from `kw_manage` as a left join `vp_barcode_2d_y` as b on a.packageno = b.packageno group by b.lotno,a.packageno order by b.lotno,a.packageno asc";$result = mysql_query($sql);while($row = mysql_fetch_array($result,MYSQL_ASSOC)){ var_dump($row);}结果:array(4) { ["packageno"]=> string(15) "VP3.0 130219001" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219002" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219003" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219004" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219005" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219006" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219007" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219008" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219009" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219010" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219011" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219012" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219013" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219014" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219015" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219016" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219017" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219018" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219019" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219020" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219021" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219022" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219023" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219024" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219048" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219049" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219050" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219051" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219052" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219053" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219054" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219055" ["cust_no"]=> string(11) "23710 JE22A" ["lotno"]=> string(4) "3207" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219107" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219108" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219109" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219110" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219111" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219112" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219113" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219114" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219115" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219116" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219117" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}array(4) { ["packageno"]=> string(15) "VP3.0 130219118" ["cust_no"]=> string(11) "23703 3AW0A" ["lotno"]=> string(4) "3218" ["count(b.lotno)"]=> string(2) "15"}
SELECT stock_no, mount*snp as total FROM `stock_detail` where `stock_no` = 'SU13061301011'CREATE TABLE IF NOT EXISTS `stock_detail` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `stock_no` varchar(20) NOT NULL, `adress` varchar(10) NOT NULL, `arr_time` datetime NOT NULL, `c_type` varchar(20) NOT NULL, `pu_no` varchar(20) NOT NULL, `cust_no` varchar(20) NOT NULL, `mount` int(10) NOT NULL, `snp` int(10) NOT NULL, `c1_time` datetime NOT NULL, `c2_time` datetime NOT NULL, PRIMARY KEY (`ID`)) ENGINE=InnoDB;---- 转存表中的数据 `stock_detail`--INSERT INTO `stock_detail` (`stock_no`, `snp`) VALUES('SU13061301011', 195),('SU13061301011', 195);
出库信息缺了cust_no,现在补上:
SELECT stock_no, cust_no,mount*snp as total FROM `stock_detail` where `stock_no` = 'SU13061301011'
array(3) { ["stock_no"]=> string(13) "SU13061301011" ["cust_no"]=> string(10) "237033AW0A" ["total"]=> string(3) "195"}array(3) { ["stock_no"]=> string(13) "SU13061301011" ["cust_no"]=> string(10) "237033AW0A" ["total"]=> string(3) "195"}
又在贴只有你自己才能看懂的数据
出库时有一个累加的过程,到达预设值就做断行处理
其实这个过程就是你最初帖子的问题,但你始终都以入库为基准,所以总是做不好
应该以出库为准:从A取n,不够再从B中取m,如此循环直到取够