数の異なる複数の異なる列に2つの表を結合:私は2つのテーブルを持つ行
一時スキーマと7027行は+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ip | varchar(32) | YES | | NULL | |
| month | int(2) | YES | | NULL | |
| day | int(2) | YES | | NULL | |
| hour | int(2) | YES | | NULL | |
| totcount | bigint(21) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
下に示されているとTEMP1を示すスキーマで再び4972行を有する
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ip | varchar(32) | YES | | NULL | |
| month | int(2) | YES | | NULL | |
| day | int(2) | YES | | NULL | |
| hour | int(2) | YES | | NULL | |
| compcount | bigint(21) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
の下に私は何をしようとしていることで、一時のデータにTEMP1から列compcountを付ける0またはNULL値のどこに値がない場合compcount。 temp1に存在するip、month、day、hourの組み合わせもすべてtempに存在しますが、その反対は真ではありません。私は一時がある場合
例として、以下のよう
+----------------+-------+------+------+----------+
| ip | month | day | hour | totcount |
+----------------+-------+------+------+----------+
| 0.0.0.0 | 1 | 17 | 0 | 215 |
| 0.0.0.0 | 1 | 18 | 1 | 490 |
| 0.0.0.0 | 1 | 19 | 0 | 749 |
| 0.0.0.0 | 1 | 20 | 0 | 471 |
| 0.0.0.0 | 1 | 21 | 15 | 330 |
| 0.0.0.0 | 1 | 22 | 15 | 45 |
| 0.0.0.0 | 1 | 23 | 14 | 214 |
| 0.0.0.0 | 2 | 25 | 1 | 13 |
| 1.1.1.1 | 1 | 17 | 21 | 58 |
| 1.1.1.1 | 1 | 18 | 22 | 70 |
| 1.1.1.1 | 1 | 20 | 22 | 89 |
| 1.1.1.1 | 1 | 21 | 11 | 67 |
+----------------+-------+------+------+----------+
とTEMP1:
+----------------+-------+------+------+----------+
| ip | month | day | hour | compcount|
+----------------+-------+------+------+----------+
| 0.0.0.0 | 1 | 17 | 0 | 100 |
| 0.0.0.0 | 1 | 18 | 1 | 176 |
| 0.0.0.0 | 1 | 21 | 15 | 182 |
| 0.0.0.0 | 1 | 22 | 15 | 36 |
| 0.0.0.0 | 1 | 23 | 14 | 198 |
| 1.1.1.1 | 1 | 17 | 21 | 46 |
| 1.1.1.1 | 1 | 18 | 22 | 53 |
| 1.1.1.1 | 1 | 20 | 22 | 27 |
| 1.1.1.1 | 1 | 21 | 11 | 61 |
+----------------+-------+------+------+----------+
が、私はあることが結果のテーブルを希望:
+----------------+-------+------+------+----------+----------+
| ip | month | day | hour | totcount |compcount |
+----------------+-------+------+------+----------+----------+
| 0.0.0.0 | 1 | 17 | 0 | 215 | 100 |
| 0.0.0.0 | 1 | 18 | 1 | 490 | 176 |
| 0.0.0.0 | 1 | 19 | 0 | 749 | 0 |
| 0.0.0.0 | 1 | 20 | 0 | 471 | 0 |
| 0.0.0.0 | 1 | 21 | 15 | 330 | 182 |
| 0.0.0.0 | 1 | 22 | 15 | 45 | 36 |
| 0.0.0.0 | 1 | 23 | 14 | 214 | 198 |
| 0.0.0.0 | 2 | 25 | 1 | 13 | 0 |
| 1.1.1.1 | 1 | 17 | 21 | 58 | 46 |
| 1.1.1.1 | 1 | 18 | 22 | 70 | 53 |
| 1.1.1.1 | 1 | 20 | 22 | 89 | 27 |
| 1.1.1.1 | 1 | 21 | 11 | 67 | 61 |
+----------------+-------+------+------+----------+----------+
Iをクエリを試しました
select temp.ip, temp.month, temp.day, temp.hour, temp.totcount,
temp1.compcount from temp1 left outer join temp on
temp.ip=temp1.ip and temp.month=temp1.month and
temp.day=temp1.day and temp.hour=temp1.hour order by ip;
ですが、4972行しか返されませんでした。どのように私は探しているものを返すようにクエリを構築するのですか?
を使うのか?違いが予期しないものではないことを確認しようとしています。 – cwallenpoole