ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

SQLコマンドでのエラーに関しまして

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2009-1-16 13:14
gs_kuwabara  長老   投稿数: 229
いつもお世話になっております

 MS-SQLを使用しているのですが
 メインレコードに下記のSQL文を入れて実行すると

  ○SQL文
   SELECT 郵便番号,住所,
    (SELECT count(*) FROM 郵便番号辞書
WHERE 住所 LIKE ':1')
FROM 郵便番号辞書

WHERE 住所 LIKE ':1'

order by 郵便番号
    
    ※郵便番号辞書から郵便番号の逆検索を行う
     サブプログラムで1件しかなければ画面を
     表示させたくないので1つのSQL文で件数
     も取得したいのです

  ○エラーメッセージ
   EXISTSを使わないサブクエリでは、サブクエリの選択リスト
   には、式を1つだけしか使えません。

 とエラーメッセージがでます

 何のエラーなのでしょうか?
 ご教授頂ければ幸いです
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-1-16 16:55
KURITA  常連   投稿数: 45
単純にMS-SQLでは許されていない記述方法になっている
ということはありませんか?
上記のSQLはOracleでは意図されている結果が戻ります。
MS-SQL Serverならクエリアナライザで、そのSQLは実行できているのですか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-1-16 17:33
gs_kuwabara  長老   投稿数: 229
ORACLEでも結果が返ってきますか・・・

MS-SQLでも問題無く結果が返ってきます
クエリアナライザでも問題はありません

マジックからだと何か制約がかかるのでしょうか・・・
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-1-19 10:38
KURITA  常連   投稿数: 45
実行環境が無いので憶測になります。

クエリアナライザで直接実行できているとのことですので
MAGICで用意されているデータベースのドライバ(DLL)が
SQLを解析しきれないとかそういうことかも知れないのかと・・

もし残りを試すとしたら引渡し引数を分けてみる。
またサブクエリに別名をつけてみるをしてみたらいかがでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-1-19 15:20
gs_kuwabara  長老   投稿数: 229
お返事ありがとうございます

 SELECT 郵便番号,住所
  FROM 郵便番号辞書
   WHERE 住所 LIKE ':1'
    order by 郵便番号

は実行できるのです
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-1-19 15:50
Take  一人前   投稿数: 124
gs_kuwabaraさん
引数をひとつではなく、片方を式にすることで二つにし「':1’」の後のほうを「:2」にしたらどうなりますか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-1-20 10:36
KURITA  常連   投稿数: 45
以下のようなSQLにした場合ら、どうなりますか?
(細かい所はOracleでの記述になってしまっていますので
MS-SQLに置き換えてください)

SELECT A.郵便番号, A.住所, B.件数
FROM
(
SELECT ':1' AS KeyName, 郵便番号,住所
FROM 郵便番号辞書
WHERE 住所 LIKE ':1'
) A,
(
SELECT ':1' AS KeyName, COUNT(*) AS 件数
FROM 郵便番号辞書
WHERE 住所 LIKE ':1'
)
WHERE A.KeyName = B.KeyName
ORDER BY A.郵便番号
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-1-20 16:26
Kurogane  常連   投稿数: 50
gs_kuwabaraさん、こん○○は。

今回の件については制限事項のようです。
具体的には、select句内にサブクエリがある状態で、order by句を
併用すると、DBエラーが起きます。

対処として今回の例ですと、

SELECT 郵便番号,住所,cnt.件数
FROM 郵便番号辞書,(SELECT count(*) '件数' FROM 郵便番号辞書 WHERE 住所 LIKE ':1') cnt
WHERE 住所 LIKE ':1'
ORDER BY 郵便番号

とすれば、動作するのではないかと思われます。
お試し下さい。^^
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-1-20 18:44
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

v9Plus と Sqlserver2005の組み合わせで
同じクエリーをMagicから実行してやると
問題なく動作しました

文法的にも問題ないですし
MagicもF8に引っ掛かりませんでした

後日 v10で試してみますが
多分問題ないかと思われます
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-1-26 10:28
gs_kuwabara  長老   投稿数: 229
皆様
色々ご指南ありがとうございました
先週は、インフルエンザにかかりまして
出社出来なくて試せませんでしたが
先程、解決いたしました
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約