OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

SQLの問題です。

  • すぐに回答を!
  • 質問No.214222
  • 閲覧数77
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 95% (176/185)

以下のような二つのテーブルがあります。

社員テーブル
社員番号 社員氏名
1     花子
2     太郎

所属テーブル
社員番号 所属番号
1     10
1     20
2     30

欲しいのは以下の結果です。
1 花子
2 太郎

以下のSQLを実行すると、
SELECT distinct a.社員番号, a.社員氏名, b.所属番号
FROM 社員 a,所属 b
where a.社員番号 = b.社員番号
order by 所属番号

1 花子
1 花子
2 太郎

となってしまいます。
先に述べたとおりの結果を取得するにはどういうSQLを書いたらいいでしょうか?
お知恵を貸してください。宜しくお願いします。
Oracle8iを使用しています。
  
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル9

ベストアンサー率 50% (37/73)

>欲しい結果は、所属番号でソート
成るほど、分りました。
その場合は、どちらの所属番号でソートするのか決める必要があります。
例では花子の所属番号が両方とも太郎よりも若くなっていますが、もし太郎の番号が花子の番号の間に来たらどうしますか?
例えば所属番号が複数ある場合は大きい方を取る、という決まりにするなら

SELECT 社員番号, Max(所属番号) as 所属番号の最大
FROM 所属テーブル
GROUP BY 社員番号;

とかで社員番号に対応する所属番号をひとつにして、これと社員テーブルを連結して「所属番号の最大」でソートしたらどうでしょうか。
お礼コメント
sunnys

お礼率 95% (176/185)

なるほど、Maxで抽出してから・・ですね。
それなら思った通りの結果が返ってきます。
考え方を変える、というのがなかなか出来なくて。
参考になりました。どうもありがとうございました♪
投稿日時 - 2002-02-12 12:43:06
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 41% (245/593)

Distinct は使いたくないのですか? SELECT DISTINCT ~ と書いてやってみてください。 ただ、パフォーマンスは悪くなります。 ...続きを読む
Distinct は使いたくないのですか?

SELECT DISTINCT ~
と書いてやってみてください。

ただ、パフォーマンスは悪くなります。
補足コメント
sunnys

お礼率 95% (176/185)

回答ありがとうございます。
DISTINCTを使っても重複するのです。
所属コードが違うから当然なんですが・・。
そこをお知恵を借りてなんとかできないかと、思ったのですが・・。
また何かあれば教えてください。
投稿日時 - 2002-02-08 21:27:24
お礼コメント
sunnys

お礼率 95% (176/185)

回答ありがとうございました。
また何かありましたらよろしくお願いします。
投稿日時 - 2002-02-12 12:45:22
  • 回答No.2
レベル9

ベストアンサー率 50% (37/73)

ご質問のSQLを実行した結果は、 1 花子 10 1 花子 20 2 太郎 30  だと思います。 SELECT distinct a.社員番号, a.社員氏名 FROM 社員 a,所属 b where a.社員番号 = b.社員番号 にすれば、期待の結果が得られると思います。 ...続きを読む
ご質問のSQLを実行した結果は、

1 花子 10
1 花子 20
2 太郎 30  だと思います。

SELECT distinct a.社員番号, a.社員氏名
FROM 社員 a,所属 b
where a.社員番号 = b.社員番号

にすれば、期待の結果が得られると思います。
補足コメント
sunnys

お礼率 95% (176/185)

回答ありがとうございます。
すみません、私の説明が悪かったですね。
確かに私の書いたSQLの結果は
1 花子 10
1 花子 20
2 太郎 30  
です。
そして、欲しい結果は、所属番号でソートされた
1 花子 10
2 太郎 30 
という結果です。
つまり、社員番号での重複を避けたいのです。
また何かありましたら教えてください。 
投稿日時 - 2002-02-08 21:29:54
お礼コメント
sunnys

お礼率 95% (176/185)

回答ありがとうございました。
また何かありましたらよろしくお願いします。
投稿日時 - 2002-02-12 12:47:28
  • 回答No.3
レベル14

ベストアンサー率 33% (1403/4213)

所属テーブルのデータを拝見するに、「花子」さんが所属に2つありますね。 所属テーブルとの結合により「花子」さんが2回(計3つ)が表示されています。 ORDER BY で所属番号順にする必要があるならばルールが必要でしょう。 (どれをソート用の所属とするか) ...続きを読む
所属テーブルのデータを拝見するに、「花子」さんが所属に2つありますね。

所属テーブルとの結合により「花子」さんが2回(計3つ)が表示されています。

ORDER BY で所属番号順にする必要があるならばルールが必要でしょう。
(どれをソート用の所属とするか)
補足コメント
sunnys

お礼率 95% (176/185)

回答ありがとうございます。
社員番号に対して所属は常に1対1では無いので、
所属の重複は避けられないんです。
ただし、今回は社員の重複無しで、
なおかつ所属でソートする必要があるのでお知恵をお借りしたい次第です。
また何か案がありましたら教えてください。
投稿日時 - 2002-02-08 21:32:30
お礼コメント
sunnys

お礼率 95% (176/185)

回答ありがとうございました。
また何かありましたらよろしくお願いします。
投稿日時 - 2002-02-12 12:49:53
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ