• 締切済み

副問い合わせについて

お世話になります。明日から仕事で使うのですが、下記の構文が よく理解できません。宜しくお願い致します。 SQL Severは経験ありません。 経験はInfomixSql,Access,MySql程度です。 (1)行副問い合わせ(副問い合わせの結果が1行n列で返ってくる) SELECT * FROM t1 WHERE (c4, c2) = (SELECT MAX(c1), 'a' FROM t2); このwhere節の結合条件はどのような感じになるのでしょうか? (2)表副問い合わせ(副問い合わせの結果がm行n列(表)で返ってくる) SELECT * FROM t1 WHERE c4 IN ( SELECT c1 FROM t2 WHERE c4 >= 10 ) ORDER BY c1; 、 SELECT x1.c1, x2.y4 FROM t1 x1, ( SELECT c3, SUM(c4) AS y4 FROM t2 GROUP BY c3) AS x2 WHERE x1.c3 = x2.y4 ORDER BY c1; (1)に同じです。 参考になりそうなサイトでも結構ですので 宜しくお願い致します。

みんなの回答

回答No.2

質問の意図が分かりません。 >WHERE (c4, c2) この記述方法は、SQL92で規定されている行値構成子(行値式)ですが、SQL Serverでは未サポートです。 標準SQLについて、聞きたいのですか?

sendaitaro
質問者

補足

すいません、もしかしたらSQLの構文(副問い合わせの)を他の ものから拾ったのかもしれません。 お聞きしたいのは、おっしゃるとおり標準SQLです。 今日現在では、副問い合わせを使用したPGはないのですが いずれ渡されそうなので。

noname#221739
noname#221739
回答No.1

> SELECT * FROM t1 WHERE (c4, c2) = (SELECT MAX(c1), 'a' FROM t2); そもそもエラーになるんじゃないか?>WHERE (c4, c2) 『SQL Server』ったって、Transact-SQLである前に SQL-92 が基本なんだし。 プレーンなSELECT文でリライトしてみては? SQL Server なら、『Common SQL Environment』や『oSqlEditor』のような GUI でDBをメンテしたり、SQL文を実行するヤツ(SELECT結果を Tabular 表示可能)がついてる筈だし。 そいつで、トライ&エラーしてみた方が早いのでは?

参考URL:
http://www.sqlpassj.org/

関連するQ&A