dポイントプレゼントキャンペーン実施中!

お世話になります。明日から仕事で使うのですが、下記の構文が
よく理解できません。宜しくお願い致します。
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)に同じです。
参考になりそうなサイトでも結構ですので
宜しくお願い致します。

A 回答 (2件)

質問の意図が分かりません。



>WHERE (c4, c2)

この記述方法は、SQL92で規定されている行値構成子(行値式)ですが、SQL Serverでは未サポートです。

標準SQLについて、聞きたいのですか?

この回答への補足

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

補足日時:2007/02/21 21:08
    • good
    • 0

> 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/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!