1

私は次のようなものを持つために3つのテーブルにアクセスしようとしています:

+------+------+------+
| ITEM |  PCS |  CSS |
+------+------+------+
| 1099 |    2 |   11 |
| 1098 |    2 |    2 | 
| 1097 |    2 |    1 | 
| 1096 | NULL | NULL | 
| 1095 | NULL | NULL | 
| 1094 | NULL | NULL |  
| 1093 | NULL | NULL | 
| 1092 | NULL | NULL | 
+------+------+------+

しかし、私が得るのはこれだけです:

+------+------+------+
| ITEM |  PCS |  CSS |
+------+------+------+
| 1099 |    2 |   11 |
| 1098 |    2 |    2 | 
| 1097 |    2 |    1 | 
+------+------+------+

//クエリと少し混乱しているので、代わりに実行しようとしていることの内訳を次に示します。

SELECT CODE
FROM SET2
WHERE MO = MONTH(SYSDATE())
AND YR = YEAR(SYSDATE())

//and then:

SELECT ITEM, PCS, CSS
FROM SET3
WHERE S3.CODE=S2.CODE

//then:

SELECT ITEM
FROM SET1
WHERE S1.ITEM=S3.ITEM

私のテーブル

SET1

+------+
| ITEM |
+------+
| 1099 |
| 1098 | 
| 1097 | 
| 1096 | 
| 1095 | 
| 1094 | 
| 1093 | 
| 1092 | 
+------+

SET2

+------+-----+------+
|   YR |  MO | CODE |
+------+-----+------+
| 2013 |   1 |    1 | 
| 2013 |   2 |    2 | 
+------+-----+------+

SET3

+------+-----+------+------+
|  PCS | CSS | CODE | ITEM |
+------+-----+------+------+
|    2 |  11 |    1 | 1099 |
|    2 |   2 |    1 | 1098 | 
|    2 |   1 |    1 | 1097 | 
+------+-----+------+------+
4

1 に答える 1

2

これを機能させるには、左結合を使用する必要があります。

SELECT SET1.ITEM, PCS, CSS
FROM SET1
LEFT JOIN SET3 ON SET3.ITEM = SET1.ITEM
LEFT JOIN SET2 ON SET2.CODE = SET3.CODE 
    AND SET2.MO = MONTH(SYSDATE()) 
    AND SET2.YR = YEAR(SYSDATE())
于 2013-03-21T03:47:21.937 に答える