人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Accessクエリ 100ポイント
1/7〜8に成績レコードが無い投手名を出力するクエリ、どうすれば良いでしょうか?

テーブル【投手マスタ】:
投手ID , 投手名
E21 , 岩隈
G18 , 桑田
L18 , 松坂

テーブル【成績】:
投手ID , 日付 , 回 , 失点
L18 , 2005/01/04 , 2 , 3
G18 , 2005/01/06 , 2 , 2
L18 , 2005/01/07 , 3 , 0
L18 , 2005/01/09 , 6 , 0

クエリ【成績レコードの無い投手】:
SELECT 投手マスタ.投手ID, 投手マスタ.投手名
FROM 投手マスタ LEFT JOIN 成績 ON 投手マスタ.投手ID = 成績.投手ID
WHERE (((成績.投手ID) Is Null));

●質問者: radio3
●カテゴリ:コンピュータ
✍キーワード:access ON SELECT クエリ ポイント
○ 状態 :終了
└ 回答数 : 8/8件

▽最新の回答へ

1 ● kn1967
●0ポイント

http://www.hatena.ne.jp/

はてな

ダミーでスミマセン

まずは、これがどうなるかを確認してみてください。

SELECT 投手マスタ.投手ID, 投手マスタ.投手名

FROM 投手マスタ , 成績

WHERE (成績.投手ID Is Null);

次にこうしてみてください。

SELECT 投手マスタ.投手ID, 投手マスタ.投手名

FROM 投手マスタ , 成績

WHERE (成績.投手ID Is Null)

GROUP BY 投手マスタ.投手ID, 投手マスタ.投手名;

◎質問者からの返答

答え出ません。日付1/7〜8という条件はどこにもなくていいのでしょうか...???


2 ● kn1967
●20ポイント

http://www.hatena.ne.jp/

はてな

2回目スミマセン。

思いっきり勘違いしてました。スミマセン。

SELECT 投手ID, 投手

FROM 投手マスタ

WHERE NOT EXISTS(SELECT * FROM 成績 WHERE 日付 BETWEEN #2005/01/07# AND #2005/01/08#);

◎質問者からの返答

SELECT 投手ID, 投手名

結果は空レコード。

クエリ1本では不可能ということですかね?


3 ● きゃづみぃ
●0ポイント

http://www.hatena.ne.jp/

はてな

SELECT 投手マスタ.投手ID, 投手マスタ.投手名, 成績.日付

FROM 投手マスタ LEFT JOIN 成績 ON 投手マスタ.投手ID = 成績.投手ID

WHERE (((成績.投手ID) Is Null) AND ((成績.日付)<#1/7/2005#)) OR (((成績.日付)>#1/8/2005#));

こうなりますね。

◎質問者からの返答

結果:

L18 松坂

です。

E21 岩隈

G18 桑田

と出てほしいのです。


4 ● peekaboo
●0ポイント

http://www.hatena.ne.jp/1108642591#

人力検索はてな - Accessクエリ 100ポイント 1/7〜8に成績レコードが無い投手名を出力するクエリ、どうすれば良いでしょうか? テーブル【投手マスタ】: 投手ID , 投手名 E21 , 岩隈 G18 , 桑..

これではダメですか?

SELECT 投手マスタ.投手ID, 投手マスタ.投手名

FROM 成績 RIGHT JOIN 投手マスタ ON 成績.投手ID = 投手マスタ.投手ID

WHERE 投手マスタ.投手ID <> ANY (SELECT 投手ID FROM 成績 WHERE 日付 BETWEEN #2005/1/7# AND #2005/1/8#);

◎質問者からの返答

ダメです。松坂出ます。


5 ● oh_tsu
●100ポイント

http://www.hatena.ne.jp/1108642591#

人力検索はてな - Accessクエリ 100ポイント 1/7〜8に成績レコードが無い投手名を出力するクエリ、どうすれば良いでしょうか? テーブル【投手マスタ】: 投手ID , 投手名 E21 , 岩隈 G18 , 桑..

ダミーです。

http://www.hatena.ne.jp/1108642591#

人力検索はてな - Accessクエリ 100ポイント 1/7〜8に成績レコードが無い投手名を出力するクエリ、どうすれば良いでしょうか? テーブル【投手マスタ】: 投手ID , 投手名 E21 , 岩隈 G18 , 桑..

2の回答に追記いたします。

改善前SQL

SELECT 投手ID, 投手

FROM 投手マスタ

WHERE NOT EXISTS(SELECT * FROM 成績 WHERE 日付 BETWEEN #2005/01/07# AND #2005/01/08#);

改善SQL

SELECT 投手ID, 投手

FROM 投手マスタ

WHERE NOT EXISTS(SELECT * FROM 成績 WHERE 日付 BETWEEN #2005/01/07# AND #2005/01/08# AND 投手マスタ.投手ID=成績.投手ID);

とした方がいいでしょう。

改善前SQLでは「投手マスタ」と「成績」のつながりがない状態となるので

「NOT EXISTS(SELECT .. #2005/01/08#)」という条件で必ず空レコードとなってしまいます。

DBは分かりますが、Accessでの日付の指定方法を知らないので

「2の回答」に追記する形となりました。

間違ってたらすいません m(_ _)m

◎質問者からの返答

素晴らしい!! 完璧です!! お見事でした!!!


1-5件表示/8件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ