• ベストアンサー

内部結合のSQL文

次のような条件でのSQL文はどのように書けばよいのでしょうか? 売上テーブル(フィールドは「売上No.」)と売上明細テーブル(フィールドは「売上No.」「行番号」)を内部結合します。 結合の条件は売上明細テーブルの売上No.が売上テーブルの売上No.と等しいもの、かつ売上明細テーブルの行番号の一番小さいもの、です。 行番号はユニークですが、必ずしも1から順に振られているとは限りません。 どうぞよろしくお願いします。

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

  • ベストアンサー
回答No.3

間違えた。 select A.売上No, B.行番号 from 売上テーブル A, (select 売上No, min(行番号) 行番号 from 売上明細テーブル group by 売上No) B where A.売上No = B.売上No order by A.売上No だった。

candie-o
質問者

お礼

レスが遅れてしまい申し訳ありませんでした。参考になりました、ありがとうございます。

その他の回答 (4)

noname#140971
noname#140971
回答No.5

X ORDER BY 売上No, 行番号; O ORDER BY 売上No; 訂正!

candie-o
質問者

お礼

レスが遅れてしまい申し訳ありませんでした。参考になりました、ありがとうございます。

noname#140971
noname#140971
回答No.4

内部結合は考慮する必要はないと思いますよ。 <売上> 売上No__売上日 ________1__2007/11/11 ________2__2007/11/12 <売上明細> 売上No__行番号 ________1_________1 ________1_________2 ________2_________1 ________2_________2 <クエリ1> 売上No__行番号 ________1_________1 ________2_________1 SELECT 売上No, 行番号 FROM 売上明細 WHERE 行番号=DMin("行番号","売上明細","売上No=" & 売上No) ORDER BY 売上No, 行番号; ここでは、条件に合致する最小値を取得するDMin関数を使っています。 SELECT 売上No, 行番号 FROM 売上明細 AS 明細 WHERE 行番号=(select min(行番号) from 売上明細 WHERE 売上No=明細.売上No) ORDER BY 売上No, 行番号; もちろん、DMin関数の部分を SQL文で書くことも可能。 [売上明細]を対象にデータを絞り込んでも結果は同じかと思います。

回答No.2

select A.売上No, B.行番号 from 売上テーブル A, (select 売上No, min(行番号) 行番号 from 売上明細テーブル group by 売上No) B order by A.売上No でどうでしょうか

回答No.1

こんにちは、candie-oさん MIN関数を使ってみてはいかがでしょうか?

参考URL:
http://www.komonet.ne.jp/~psql/chap9.htm
candie-o
質問者

お礼

レスが遅れてしまい申し訳ありませんでした。参考になりました、ありがとうございます。

関連するQ&A