[PHP-users 33399] Re: �������������������������������

植村 友哉 uemura-t @ hikami.co.jp
2008年 3月 19日 (水) 14:31:14 JST


植村です。

うえださん、早速ご教示いただきありがとうございます。
ご教示いただいた下記コードを試してみたのですが、
「ORA-00933: SQL command not properly ended」のエラーが
出てしまいます。
コードを試したのは、「SI Object Browser」というツールを使って
コードを試しました。

 > SELECT tbl1.受注番号, tbl1.得意先CD, tbl1.相手管理NO,tbl1.出荷,tbl1.売上
 > FROM 受注管理 AS tbl1
 > JOIN (
 >   SELECT 相手管理NO, COUNT(*) AS c FROM 受注管理
 >   WHERE 出荷 IS NULL OR 売上 IS NULL
 >   GROUP BY 相手管理NO
 >   HAVING c >= 2
 > ) AS tbl2 ON (tbl1.相手管理NO = tbl2.相手管理NO)
 > ORDER BY tbl1.相手管理NO, tbl1.受注番号

自分なりにJOIN句のことを調べましたが、上記エラーの原因が
分かりませんでしたので、次にJOIN句で記述されている部分のみを抽出して
試してみました。

 >   SELECT 相手管理NO, COUNT(*) AS c FROM 受注管理
 >   WHERE 出荷 IS NULL OR 売上 IS NULL
 >   GROUP BY 相手管理NO
 >   HAVING c >= 2

そうすると、
「ORA-00904: "c":invalid identifier」のエラーが表示されます。
"COUNT(*) AS c FROM ~"のAS句でのcの使い方がだめなのでしょうか。
上記コードを下記のように書き換えると動作します。

SELECT 相手管理NO FROM 受注管理
WHERE 出荷 IS NULL OR 売上 IS NULL
GROUP BY 相手管理NO
HAVING COUNT(相手管理NO) >= 2

このコードで確認すると、無知な私なりに要求される結果が返ってきているように
思えるのですが、SELECT句の後ろに"COUNT(*)"を記述するのと、HAVING句の後ろに
"COUNT(相手管理NO)"を記述するのでは違うのでしょうか?

話がずれてしまいましたが、
(1)、「ORA-00933: SQL command not properly ended」のエラーについて。
(2)、「ORA-00904: "c":invalid identifier」のエラーについて。

(2)のAS句の使用方法等をgoogle等で検索して調べましたが、何がだめなのかが
全然わかりませんでした。

申し訳ございませんが、再度ご教示ください。


PHP-users メーリングリストの案内