[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 メーリングリストの案内