(現在 過去ログ35 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5446 / inTopicNo.1)  外部dbでのambiguousエラーへの対処
  
□投稿者/ 尾形 -(2009/12/18(Fri) 13:14:36)
    よろしく御願いします
    MySQLです

    伝票見出テーブル(日付・得意先・denpyo_id 他)
    伝票明細テーブル(denpyo_id・商品・単価 他)
    があります
    denpyo_idでリンクしています

    xvwの定義で上記2つを結合設定します
    #DSQLで denpyo_idを指定した抽出をしたいのですが
    Column 'denpyo_id' in where clause is ambiguous
    といったエラーが表示され編集できません

    エラーメッセージから想像するに
    denpyo_id の項目名が複数(両方に)あるから特定できないよ
    って感じだと思うのですが

    サブ側の項目名('denpyo_id)を違う名前にすればいいのでしょうけど
    なんかイヤなのですが
    これを回避する良い方法ないでしょうか?

引用返信 [メール受信/OFF] 削除キー/
■5447 / inTopicNo.2)  Re[1]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/18(Fri) 13:53:07)
    2009/12/18(Fri) 15:16:40 編集(投稿者)

    > Column 'denpyo_id' in where clause is ambiguous

    #DSQL に何を書いているのかハッキリしないけど
    "伝票明細テーブル".denpyo_id

    "伝票見出テーブル".denpyo_id

    ちゃんとわかるように指定していないのでは?



    ※以下追加※

    8.2.1. 識別子の修飾語
    http://dev.mysql.com/doc/refman/5.1/ja/identifier-qualifiers.html

    > MySQLでは、名前に単一識別子や複合識別子を使用することができます。
    > 構成が複数のパート名からなる場合、ピリオド(‘.’)文字で分割され
    > なければなりません。複数パート名の頭文字は識別子として働き、最後
    > 尾の識別子が実行されているコンテキストに影響を与えます。
    >
    > MySQLでは、次の形式のいずれかを使用してカラムを参照することができ
    > ます。

    > カラム参照 意味
    > col_name この名前のカラムが組み込まれたステートメントで使用
    > されているテーブル内のカラムcol_name
    > tbl_name.col_name デフォルトデータベースのテーブルtbl_name内
    > のカラムcol_name
    > db_name.tbl_name.col_name データベースdb_nameのテーブルtbl_name内
    > のカラムcol_name
    >
    > 複数のパート名からなる構成要素に引用符が必要な場合、名前全体を1つ
    > のものとして引用符で囲むのではなく、それぞれの名前を個別に引用符で
    > 囲んでください。例えば、`my-table.my-column`ではなく、
    > `my-table`.`my-column`と記述してください。
    >
    > 対象となる参照があいまいな場合、ステートメント内のカラム参照の前に
    > tbl_nameやdb_name.tbl_nameをつける必要があります。例えば、テーブル
    > t1とt2のそれぞれに同名のカラムcがあり、t1とt2の両方を使用するSELECT
    > ステートメントでcを読み取るとします。この場合cは、ステートメントで
    > 使用されている 2 つのテーブル中で一意なカラムを表すものではなく、
    > あいまいであるため、t1.cまたはt2.cと記述することによって、どちらの
    > テーブルが対象か指定する必要があります。同様に、データベースdb1の
    > テーブルtとデータベースdb2のテーブルtに含まれているカラムを取り出す
    > 場合は、それぞれのテーブルのカラムをdb1.t.col_nameとdb2.t.col_name
    > として参照します。


引用返信 [メール受信/OFF] 削除キー/
■5448 / inTopicNo.3)  Re[2]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/18(Fri) 16:32:31)
    どうも、ありがとうこざいます

    > "伝票明細テーブル".denpyo_id
    > 8.2.1. 識別子の修飾語
    ここまでは自分でも行き着いたのですが
    書き方?が悪いのか通らないのです
    実際のテーブル名は uriage_m です
    denpyo_id は数値項目です

    &DSQL="uriage_m.denpyo_id = 123"
    &DSQL="'uriage_m'.'denpyo_id' = 123"

    どちらもダメなんです

引用返信 [メール受信/OFF] 削除キー/
■5449 / inTopicNo.4)  Re[3]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/18(Fri) 16:59:24)
    よく分かりませんけど

    > &DSQL="uriage_m.denpyo_id = 123"
    このように書いた時のエラーメッセージが
    Unknown column 'uriage_m.denpyo_id' in 'where clause'
    と表示されています

    桐が項目名全体を ' で囲っているのかなと思えたり



引用返信 [メール受信/OFF] 削除キー/
■5450 / inTopicNo.5)  Re[4]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/18(Fri) 17:40:50)
    2009/12/18(Fri) 17:52:29 編集(投稿者)

    > よく分かりませんけど
    >>&DSQL="uriage_m.denpyo_id = 123"
    > このように書いた時のエラーメッセージが
    > Unknown column 'uriage_m.denpyo_id' in 'where clause'
    > と表示されています
    > 桐が項目名全体を ' で囲っているのかなと思えたり

    ログを見ましょう! 前にも書いたと思うけど。

    PostgreSQL では
    &DSQL="uriage_m.denpyo_id = 123"
    この方式で通るようです。

    MySQL では、どういう SQL文になるかわかりませんけど

    &DSQL="""uriage_m"".denpyo_id = 123"
    としてみるとか?



    なお
    &DSQL="""uriage_m"".""denpyo_id"" = 123"
    とすれば WHERE句は

    WHERE ("uriage_m"."denpyo_id" = 123) AND ("uriage_m"."denpyo_id"="uriage_l"."denpyo_id")

    のようになります。(もう一方のテーブルが uriage_l だとして)


引用返信 [メール受信/OFF] 削除キー/
■5451 / inTopicNo.6)  Re[1]: 外部dbでのambiguousエラーへの対処
□投稿者/ 通りすがり -(2009/12/18(Fri) 18:28:40)
    横からゴメンね

    普通に、伝票見出.xvw と 伝票明細.xvw を denpyo_id でリンクしてサブフォームじゃダメなん?
    結合とかjoinは、そういう時に使うものでもないと思うのですが、何か必要な状況があるのかな?

    > ■5143  Re[11]: 式サンプルです
    > 何故、サブフォーム使わないのか、
    > …
    > ツイデの時にでも教えて

    > ■5417 / 1階層)  外部dbで結合状態での入力
    > あと、1対多ならリンクでOK(ジョインじゃないよ)
引用返信 [メール受信/OFF] 削除キー/
■5452 / inTopicNo.7)  Re[2]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 09:06:16)
    どうも、こんにちは

    > 何か必要な状況があるのかな?
    今回は納品書印刷です

    桐の場合、結合表っていうぐらいですから
    基本的には結合(JOIN)が中心でないですか


    > あと、1対多ならリンクでOK(ジョインじゃないよ)
    > 得意先IDでグループ化してサブフォーム
    これだと、得意先を指定しないで
    商品や単価をキーにした操作ができないですよね

    (基本的に)桐のよさは一覧形式処理にあると思っていますので


    > &DSQL="""uriage_m"".denpyo_id = 123"
    ちょっとやってみたけど、ならないようでした
    もう少し調べてみます

引用返信 [メール受信/OFF] 削除キー/
■5454 / inTopicNo.8)  Re[3]: 外部dbでのambiguousエラーへの対処
□投稿者/ 今村 誠 -(2009/12/19(Sat) 09:29:49)
    通りすがりさん横からすいません
    尾形さんこんにちは
    > 納品書印刷です
    入力中に印刷するわけですからメインアンドサブレポートで
    うまくいくはずだと思います。
    桐8ではエラーで全件印刷でしたが、桐9からは絞込状態を
    反映したはずです。
    幅田さんの掲示板にそのあたりの過去ログがあると思います。

    私も桐8の頃によく絞り込んで印刷していたので、表引きを
    使いサブフォームから印刷していました。

    mysqlだと表引きは使えないわけですから、サブから印刷すれ
    ば当然結合表になりますね。

    その場合サブの編集表の絞込状態は解除されてメインに表示
    されている伝票だけが印刷されると思いますが、サブフォーム
    を絞り込んだ印刷をテストされましたか?

    大変興味深い話題ですので差し支えない範囲でメインの項目名と
    サブの項目名とメイン3件程度、サブ30件程度でサンプルを
    アップすることは無理ですか?

    正月も近いのですぐは無理ですが研究課題としていかがでしょうか。
引用返信 [メール受信/OFF] 削除キー/
■5455 / inTopicNo.9)  Re[3]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 09:36:00)
    2009/12/19(Sat) 09:45:23 編集(投稿者)

    >>&DSQL="""uriage_m"".denpyo_id = 123"
    > ちょっとやってみたけど、ならないようでした
    &DSQL="`uriage_m`.`denpyo_id` = 123"
    こっちではどうなのだろうか?

    # PostgreSQL では " で通り ` では通らないけど
    # MySQL では ` が正解のようだ。

引用返信 [メール受信/OFF] 削除キー/
■5456 / inTopicNo.10)  Re[4]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 09:47:44)
    取り急ぎ

    > &DSQL="`uriage_m`.`denpyo_id` = 123"
    > こっちではどうなのだろうか?
    ダメでした


引用返信 [メール受信/OFF] 削除キー/
■5457 / inTopicNo.11)  Re[5]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 09:54:32)
    2009/12/19(Sat) 10:24:02 編集(投稿者)

    >>&DSQL="`uriage_m`.`denpyo_id` = 123"
    >>こっちではどうなのだろうか?
    > ダメでした

    エラーメッセージは?
    ログを見ないと SQL文がどう組み立てられているのか
    良くわからない。


    > # PostgreSQL では " で通り ` では通らないけど
    > # MySQL では ` が正解のようだ。

    単純に正解というわけでは無かったようだ! (;_;)
    MySQL は起動オプションで ANSIモードとか
    非ANSIモードとか指定できるようだけれど、その
    起動モードによって、いろんな定数や文字の
    括り方が変わってくるそうな! 難しい。
    デフォルトは標準SQLモードでは無いので ` が
    正解なようだけれど・・・

    ちなみに Access 相手には、テーブル名、カラム名
    には " も ` も [ ] も使えるようだけれど。
    桐のサンプルは ` でした。

引用返信 [メール受信/OFF] 削除キー/
■5458 / inTopicNo.12)  Re[6]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 10:37:08)
    すいません、よく分からないので
    原文のままあげます

    テーブル名は trn_uriage_m と trn_uriage_s です
    リンクキーは renban です
    抽出項目は絞りました

    >&DSQL="'trn_uriage_m'.'renban' = 123"
    >&DSQL="trn_uriage_m.renban = 123"
    の場合のクエリログ


    091219 10:20:33 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    091219 10:21:12 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SELECT COUNT(*) FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (trn_uriage_m.renban = 123) AND (A1.`renban`=A2.`renban`)
    2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (trn_uriage_m.renban = 123) AND (A1.`renban`=A2.`renban`)
    091219 10:26:52 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SELECT COUNT(*) FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE ('trn_uriage_m'.'renban' = 123) AND (A1.`renban`=A2.`renban`)
    2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE ('trn_uriage_m'.'renban' = 123) AND (A1.`renban`=A2.`renban`)

引用返信 [メール受信/OFF] 削除キー/
■5459 / inTopicNo.13)  Re[7]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 10:45:48)
    2009/12/19(Sat) 10:58:42 編集(投稿者)

    >&DSQL="'trn_uriage_m'.'renban' = 123"
    >&DSQL="trn_uriage_m.renban = 123"

    だからぁ〜!
    テーブル名、カラム名が ` (バッククォート)
    で括られていないじゃない。

    &DSQL="`trn_uriage_m`.`renban` = 123"

    ログの他のところは ` ` で括られていますよね。

    取りあえず 4.1 のリファレンス
    http://dev.mysql.com/doc/refman/4.1/ja/legal-names.html

    5.1 はこの辺
    http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html



    しかし
    >&DSQL="trn_uriage_m.renban = 123"
    こっちは日本語を使っているわけでもないし、小文字だし
    通って良さそうだけれど _ があるのでダメなのかな?

    それと、ログを見ると MySQL は桐からでも別名を使うよう
    になっているので、桐のバグは出にくい方向にあるようで
    何よりだ。


引用返信 [メール受信/OFF] 削除キー/
■5460 / inTopicNo.14)  Re[7]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 10:52:03)
    &DSQL 指定ではなく
    絞り込み条件1に =123 を直接記述した場合のログです
    この場合は、エラーは起きずに編集できます


    091219 10:48:02 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SELECT COUNT(*) FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE ((A1.`renban`=123)) AND (A1.`renban`=A2.`renban`)
    2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE ((A1.`renban`=123)) AND (A1.`renban`=A2.`renban`)

引用返信 [メール受信/OFF] 削除キー/
■5461 / inTopicNo.15)  Re[8]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 10:58:04)
    > テーブル名、カラム名が ` (バッククォート)
    すいません、その場合のログです

    このように書いた時のエラーメッセージが
    Unknown column 'trn_uriage_m.renban' in 'where clause'
    と表示されています



    091219 10:53:43 2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_m'
    2 Field List trn_uriage_m
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW KEYS FROM `trn_uriage_m`
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Query SHOW TABLE STATUS LIKE 'trn_uriage_s'
    2 Field List trn_uriage_s
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SHOW KEYS FROM `trn_uriage_s`
    2 Query SELECT COUNT(*) FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (`trn_uriage_m`.`renban` = 123) AND (A1.`renban`=A2.`renban`)
    2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (`trn_uriage_m`.`renban` = 123) AND (A1.`renban`=A2.`renban`)


引用返信 [メール受信/OFF] 削除キー/
■5462 / inTopicNo.16)  Re[9]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 11:03:13)
    2009/12/19(Sat) 11:08:12 編集(投稿者)

    > 2 Query SELECT A1.`renban`,A1.`denpyobi`,A1.`tokui_mei1`,A2.`gyo_no`,A2.`syohin_id`,A2.`id_uriage_s` FROM `trn_uriage_m` A1,`trn_uriage_s` A2 WHERE (`trn_uriage_m`.`renban` = 123) AND (A1.`renban`=A2.`renban`)

    > それと、ログを見ると MySQL は桐からでも別名を使うよう
    > になっているので、桐のバグは出にくい方向にあるようで
    > 何よりだ。

    別名を使っている中で、テーブル名を直接使っているから
    エラーになるのだろうか?

    だとしたら
    &DSQL="A1.`renban` = 123"
    で、無理矢理通るかも知れないけどやっかいだな。
    # #DSQLを使いたい場合。
    # MySQL だけの問題かも知れない?

引用返信 [メール受信/OFF] 削除キー/
■5463 / inTopicNo.17)  Re[10]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 11:09:14)
    > &SQL="A1.`renban` = 123"
    > で、無理矢理通るかも知れないけどやっかいだな。
    通りました ^^

    けど、どうしたものか (^^;

引用返信 [メール受信/OFF] 削除キー/
■5465 / inTopicNo.18)  Re[10]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 11:24:23)
    2009/12/19(Sat) 11:25:25 編集(投稿者)

    > 別名を使っている中で、テーブル名を直接使っているから
    > エラーになるのだろうか?
    > # #DSQLを使いたい場合。
    > # MySQL だけの問題かも知れない?

    PostgreSQL 8.1 でも同様だった!
    > ERROR: invalid reference to FROM-clause entry for table "hogehoge"
    > HINT: Perhaps you meant to reference the table alias "a1".

    ただし、PostgreSQL では桐は別名を使わないので #DSQL で
    この問題は生じない! 上記は直接 SQL文を投げかけた場合。

    まぁ〜、別名を使う場合はふつー別名だけを使うだろうし、
    そうで無い場合は問題ないわけだし。

    # 桐から直接 SQLを投げて結果を取り込むことが出来ないので
    # 別名を使う ODBCドライバ経由では面倒というか、ログを確認
    # したうえで別名経由で #DSQLは指定するしか無いと言うことか?


引用返信 [メール受信/OFF] 削除キー/
■5466 / inTopicNo.19)  Re[11]: 外部dbでのambiguousエラーへの対処
□投稿者/ hidetake -(2009/12/19(Sat) 11:54:11)
    2009/12/19(Sat) 11:56:04 編集(投稿者)

    >>別名を使っている中で、テーブル名を直接使っているから
    >>エラーになるのだろうか?
    >># #DSQLを使いたい場合。
    >># MySQL だけの問題かも知れない?

    Access も別名を使うとテーブル名の直接指定を含ませると
    ダメみたい。となると SQLサーバもかな?

    Access も SQLサーバも桐からは別名を使ってアクセスする
    仕様だったと思うので、MySQL とともに Access & SQLサーバ
    もこの問題は出るのかも知れない。

    取りあえず別名を使わない PostgreSQL は大丈夫なようだ
    けれど・・・


    > それと、ログを見ると MySQL は桐からでも別名を使うよう
    > になっているので、桐のバグは出にくい方向にあるようで
    > 何よりだ。

    あちらをたてると、こちらは・・・ 


引用返信 [メール受信/OFF] 削除キー/
■5467 / inTopicNo.20)  Re[4]: 外部dbでのambiguousエラーへの対処
□投稿者/ 尾形 -(2009/12/19(Sat) 12:34:02)
    どうも、こんにちは

    今回の趣旨は希望の印刷をしたい訳では
    ないですのであしからず

    > 入力中に印刷するわけですから
    入力中限定仕様はいかがなものかと

    >mysqlだと表引きは使えないわけですから
    #表引き関数の偉大さを実感している最近です
    ローカル側にマスタ確保して、表引き関数を使う
    使い方が幸せになれそうな感じです

引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -