複数のテーブル間の結合を作成するクエリを作成しようとしています。次に例を示します。
select b.name as state, c.name as city, sum(qnt) as total_quantity
from qtn_table a, state_table b, city_table c
where a.state_id = b.id and a.city_id = c.id
and a.year = 2011 and a.product = 1 group by b.name, c.name
また、内部結合で試しました:
select b.name as state, c.name as city, sum(qnt) as total_quantity
from qtn_table a
inner join state_table b ON a.state_id = b.id
inner join city_table c ON a.city_id = c.id
where a.year = 2011 and a.product = 1 group by b.name, c.name
そして結果は同じです。
独自の状態のみで都市を返すことになっていました。
state city total_quantity
NY A
NY B
Texas C
Texas D
Cali E
Cali F
しかし、次のような奇妙な結果を返しています。
state city total_quantity
NY A
Texas A
Cali A
NY B
...
...
典型的なクロス ジョインでは、すべての州で都市 A に表示されるはずですが、すべての州ではなく一部の州に表示されているだけであり、さらに奇妙な状況です。
私は何を間違っていますか?