助けてください。私はMySQL 5.1.30 Community Editionを使用しています。2つのクエリで同じデータベースに異なる結果が得られます
私は4つのテーブルを持っている:NTSは、オペレータは、国は、テーブル `operator`の列` id`への外部キーである1列( `operatorId`)がnts`
- テーブルを` cooperationtypeし、テーブルcoopertype
- テーブルオペレータのカラムidに外来キーである1カラム( `voice`)テーブルオペレータは、テーブル国のカラム(` id`)に対する外部キーである1つのカラム( `country_id`)を持っています
私は、音声番号のすべての価値がある事業者と国の数を取得したいtは 'N/A' に等しく、このクエリでcooperationtype.idによってそれらをグループ化:このクエリの合計が154カ国で、376
cooptype country operator 1 128 348 2 11 11 3 15 17
:
SELECT cooperationtype.id AS cooptype, COUNT(DISTINCT country_id) AS country, COUNT(DISTINCT operatorId) AS operator FROM nts INNER JOIN operator ON operator.id = nts.operatorId INNER JOIN country ON operator.country_id = country.id INNER JOIN cooperationtype ON cooperationtype.id = nts.voice WHERE cooperationtype.code <> 'N/A' GROUP BY cooperationtype.id
私はこの結果を得ました演算子。その後、
しかし、私は声の値のすべてに関係なく、このクエリでcooperationtype.idの、「N/A」に等しくない事業者や国のカウントのすべてを取得したい:
SELECT COUNT(DISTINCT country_id) AS country, COUNT(DISTINCT operatorId) AS operator FROM nts INNER JOIN operator ON operator.id = nts.operatorId INNER JOIN country ON operator.country_id = country.id INNER JOIN cooperationtype ON cooperationtype.id = nts.voice WHERE cooperationtype.code <> 'N/A'
を
私はこの結果を得た:
country operator 133 372
を私の質問は以下のとおりです。
- 最初のクエリの結果の合計が2番目のクエリの結果と等しくないのはなぜですか?
- 正しい結果はどれですか?
データ例:最初の問合せのため
voice country operator
1 US 1
1 US 2
1 UK 3
1 UK 4
2 US 1
2 US 2
、データを生成する必要があり:データが生成すべき第二のクエリについて
cooptype country operator
1 2 4
2 2 2
を:
country operator
2 4
2番目のクエリで期待される結果は、すべての演算子と国をntsテーブルに入れることです。だから私は最初のクエリの結果を使用し、それを合計する必要がありますか? – Hamdan
@Hamdan:クエリに 'DISTINCT'があります。それは目的ですか?また、コードをコメントに入れないでください:代わりに、自分の投稿を更新してください。サンプルデータセットに適切なフィールドを追加して、クエリの出力を投稿してください。私は正しい質問を書く必要があります。 – Quassnoi
申し訳ありませんが、私はまだ新しいです。私は自分の投稿を更新しました – Hamdan