SQLの初歩的な質問(と思います。。)


ゴリ  2004-08-18 20:38:20  No: 115704

板違いかもしれないのですが。。。SQLについて教えてください。
下記のYAOYAテーブルから
「顧客番号単位かつ最新受注日の  全フィールド情報を取得」
という事をおこないたいのですが、どのようにすればいいでしょうか?

SELECT MAX(受注日),顧客番号 FROM YAOYA GROUP BY 顧客番号
で最新受注日とその顧客番号までは取得できますが、
商品名、担当者のフィールドがMAXを含むSELECT文ではひっぱることができません。  
すいませんが、お教えください。

【YAOYAテーブル】
顧客番号  受注日     商品名    担当者        
 10001  2004/8/1   イモ       A
 10004  2004/8/12  ダイコン   B
 10003  2004/8/2    キュウリ  A 
 10001  2004/6/2    キュウリ  A
 10003  2004/9/1    ダイコン  C
 10003  2004/3/20    タマゴ   B
 10004  2004/8/30    クリ     A
 10002  2004/8/11   イチゴ    C


nanahsi  2004-08-18 21:25:39  No: 115705

やや無理矢理な感じはしますがサブクエリを使えば出来ます。

SELECT *
FROM [YAOYAテーブル]
WHERE([顧客番号] & [受注日] in (SELECT [顧客番号] & MAX([受注日]) FROM [YAOYAテーブル] GROUP BY [顧客番号]))


特攻隊長まるるう  2004-08-18 21:25:45  No: 115706

一応、Access で動作確認したけど今後、質問する場合は
環境(データベースの種類)は明記して下さい。

SELECT *
FROM YAOYA 
INNER JOIN (SELECT MAX(受注日) as [DT],顧客番号 FROM YAOYA GROUP BY 顧客番号) AS T 
ON YAOYA.受注日 = T.DT
WHERE YAOYA.顧客番号 = T.顧客番号 
Order By YAOYA.顧客番号,YAOYA.商品名,YAOYA.担当者

…でどうでしょうか?


特攻隊長まるるう  2004-08-18 21:28:49  No: 115707

かぶっちゃった。ごめんなさい。
nanashiさん勉強になります。


Max  2004-08-18 21:43:30  No: 115708

SELECT * FROM (SELECT MAX(受注日) As 最新受注日,顧客番号 FROM YAOYA GROUP BY 顧客番号) As Tmp ,YAOYA
WHERE Tmp.顧客番号=YAOYA.顧客番号 AND Tmp.最新受注日=YAOYA.受注日

とか


ゴリ  2004-08-18 23:09:28  No: 115709

皆様、早々のご回答ありがとうございます。
DBはJET4.0です。

できました!!
(特攻隊長まるるうさんのSQLで実現しています。)

もう一つお聞きしていいでしょうか。。。(甘ったれです。)
このSQLによる出力結果に、顧客マスタから顧客名をひっぱってきて
付与してやりたいのですがどのようにすればいいでしょうか。

【顧客マスタ】
顧客番号  顧客名      
 10001  フクドメ
 10002  ミヤモト
 10003  タカハシ 
 10004  ジョージマ
 10005  ナカムラ
 10006  タニ
 10007  オガサワラ
 10008  ワダ
 10009  フジモト


nanashi  2004-08-18 23:26:16  No: 115710

特攻隊長まるるうさんのSQLは試してませんが、
LEFT JOIN(またはRIGHT JOIN)で出来ます。
私の例だとこんな感じで出来ます。

SELECT [YAOYA].[顧客番号], [受注日], [商品名], [担当者], [顧客名]
FROM [YAOYA] LEFT JOIN [顧客マスタ] on [YAOYA].[顧客番号] = [顧客マスタ].[顧客番号]
WHERE([YAOYA].[顧客番号] & [受注日] in (SELECT [顧客番号] & MAX([受注日]) FROM [YAOYA] GROUP BY [顧客番号]))


Max  2004-08-18 23:29:33  No: 115711

>できました!!
はいいんですが理解されましたか?
理解したならこのような質問がくるとは思えないですが。
そのままコピペじゃ進歩がないですよ。

で質問の回答は顧客マスタとYAOYAテーブルを選択して
FROM 顧客マスタ,YAOYA WHERE 顧客マスタ.顧客番号=YAOYA.顧客番号
とすればいいです。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加