0

私のニーズを説明しましょう....

データベースの 2 つの MySQL テーブルがあります。テーブル名をストックインとストックアウトと呼びましょう。まず、シリアル番号として各エントリの一意の番号を使用して、在庫に 15 行を挿入しました。

mysql> select stockin_id, serialno, description from stockin limit 0,15;
+------------+------------+------------------------------------------+
| stockin_id | serialno   | description                              |
+------------+------------+------------------------------------------+
|          1 | KDR0000001 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          2 | KDR0000002 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          3 | KDR0000003 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          4 | KDR0000004 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          5 | KDR0000005 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          6 | KDR0000006 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          7 | KDR0000007 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          8 | KDR0000008 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          9 | KDR0000009 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|         10 | KDR0000010 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|         11 | T22ALT5786 | PRINTED BRD ASSMBLY                      |
|         12 | TU82956450 | FUNCTIONAL UNIT/GSM DXU-21               |
|         13 | X510239240 | FUNCTIONAL UNIT/GSM DXU-21               |
|         14 | TD36843873 | PRINTED BOARD ASSEMB/RP4-F               |
|         15 | TD36843908 | PRINTED BOARD ASSEMB/RP4-F               |
+------------+------------+------------------------------------------+
15 rows in set (0.00 sec)

現在、欠品テーブルに保管されていたシリアル番号が同一の在庫品から、以下のように少数の商品を振り替えさせていただきました。

mysql> select stockout_id, serialno, description from stockout limit 0,15;
+------------+------------+------------------------------------------+
| stockin_id | serialno   | description                              |
+------------+------------+------------------------------------------+
|          1 | KDR0000001 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          2 | KDR0000002 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          3 | KDR0000003 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
|          4 | KDR0000004 | DATA CARRIER/FLASH CARD WITH RBS 2000 SW |
+------------+------------+------------------------------------------+
4 rows in set (0.00 sec)

ここで、在庫から正確なSTOCK-IN HANDエントリを選択したいと思います。どうすれば達成できますか?

4

1 に答える 1

0

これを行うにはいくつかの方法があります

SELECT  *
FROM    stockin si  
WHERE   NOT EXISTS  (
                        SELECT  1
                        FROM    stockout so 
                        WHERE   si.serialno = so.serialno
                    )

また

SELECT  *
FROM    stockin si  
WHERE   si.serialno NOT IN  (
                                SELECT  so.serialno
                                FROM    stockout so 
                            )

stockinテーブルとのエントリstockoutが一意であることがわかっている場合

SELECT  *
FROM    stockin si LEFT JOIN
        stockout so ON  si.serialno = so.serialno
WHERE   so.serialno IS NULL

読んだときに最も意味のあるものを使用することをお勧めします。それから、パフォーマンスについて心配し始めてください。

于 2013-05-28T04:40:30.347 に答える