C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: クエリに関して質問させてください


(過去ログ 105 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■62919 / inTopicNo.1)  クエリに関して質問させてください
  
□投稿者/ 巴 (19回)-(2011/11/10(Thu) 13:57:18)

分類:[データベース全般] 

Access97を使用しています。

SQL文の結果を抽出条件に使う、ということで、参考書(Accessのではなく、SQL文全般に関するものです)には―

SELECT *
FROM テーブル名
WHERE 列名 = (SQLステートメント);

とあるのですが、

SELECT *
FROM TABLE
WHERE CODE =
(SELECT otherCODE FROM otherTABLE)

として実行すると「このサブクエリーでは1つのレコードしか返せません」と出てしまいます。

そんなに複雑でないクエリなので間違いはないと思うのですが…どこが問題なのでしょうか?
引用返信 編集キー/
■62920 / inTopicNo.2)  Re[1]: クエリに関して質問させてください
□投稿者/ 魔界の仮面弁士 (2400回)-(2011/11/10(Thu) 14:01:32)
2011/11/10(Thu) 14:02:00 編集(投稿者)

No62919 (巴 さん) に返信
> として実行すると「このサブクエリーでは1つのレコードしか返せません」と出てしまいます。
最後の SELECT が単一レコードではなく、複数件のレコードを返すからではないでしょうか。

> SELECT *
> FROM TABLE
> WHERE CODE =
> (SELECT otherCODE FROM otherTABLE)

 SELECT *
 FROM TABLE
 WHERE EXISTS(SELECT * FROM otherTABLE
 WHERE TABLE.CODE = otherTABLE.otherCODE)

もしくは

 SELECT *
 FROM TABLE
 WHERE CODE IN (SELECT DISTINCT otherCODE
 FROM otherTABLE)

でどうでしょうか。(未検証)
引用返信 編集キー/
■62921 / inTopicNo.3)  Re[2]: クエリに関して質問させてください
□投稿者/ 巴 (20回)-(2011/11/10(Thu) 14:08:35)
No62920 (魔界の仮面弁士 さん) に返信

EXISTS句を使うのは盲点でした!
少し形は変わりましたが、解決への大きなヒントになりました。

本当にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -