A5:SQL Mk-2

開発のこと、日々のこと

SQLエディタでUNIONを含むSQL実行結果が常に0件となる

ホーム フォーラム A5:SQL Mk-2掲示板 SQLエディタでUNIONを含むSQL実行結果が常に0件となる

  • このトピックには7件の返信、1人の参加者があり、最後にtoyabaにより1年、 8ヶ月前に更新されました。
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #19251 返信
    toyaba
    ゲスト

    (
    SELECT A.A, A.B, B.C, C.D
    FROM TBL_A A
    INNER JOIN TBL_B B ON A.A = B.A
    AND B.B=1
    INNER JOIN TBL_C C ON A.A = C.A
    AND C.C=1
    ) UNION (
    SELECT A.A, A.B, B.C, NULL AS D
    FROM TBL_A A
    LEFT JOIN TBL_B B ON A.A = B.A
    AND B.B=2
    )
    此処のSELECTではデータが取得できるデータが存在する状況で
    上記のようなSQLを実行しても
    実行結果が0件となります。

    不具合なのでしょうか?

    環境:Version 2.17.1
    DB:PostgreSQL
    となります。

    #19311 返信
    松原正和
    キーマスター

    toyaba さんこんにちは。
     
    すみません、再現できませんでした。SQLはそのままサーバーに送信され、戻ってきた結果を表示するだけなので、特定のSQLで結果が出ないのはよくわかりません。
     
    UNION の前または後ろのSELECT文単体では結果が戻ってくるでしょうか? 結合条件でtimestamp などがあり、タイムゾーンの影響を受けて結果が返らない等の可能性はあるでしょうか?

    #19355 返信
    toyaba
    ゲスト

    松原様

    回答遅くなりました。

    UNION句の
    結合条件などtimestamp方は存在していますが、
    此処のSELECT句でデータの取得はできております。

    #19405 返信
    toyaba
    ゲスト

    松原様

    情報が1つ漏れておりました。

    SELECT句の取得対象にリンクテーブルが含まれております。

    接続先のテーブルだけの場合は取得できることを確認しましたので
    リンクテーブルが含まれているときに、UNIONの結果が取得できないことになります。

    お手数ですが調査のほどよろしくお願いします。

    #19548 返信
    松原正和
    キーマスター

    toyaba さんこんにちは。お返事が遅くなり申し訳ありません。

    ちょっと手元でリンクテーブルまで検証できていないのですが、
     
    たとえば、以下のSQLでは件数は正しく返るのでしょうか?


    WITH AAA as
    (
    SELECT A.A, A.B, B.C, C.D
    FROM TBL_A A
    INNER JOIN TBL_B B ON A.A = B.A
    AND B.B=1
    INNER JOIN TBL_C C ON A.A = C.A
    AND C.C=1
    ) UNION (
    SELECT A.A, A.B, B.C, NULL AS D
    FROM TBL_A A
    LEFT JOIN TBL_B B ON A.A = B.A
    AND B.B=2
    )
    select count(*) from AAA

    • この返信は1年、 9ヶ月前に松原正和が編集しました。
    #19578 返信
    toyaba
    ゲスト

    松原様
    実行したところ
    SQL : syntax error at or near “union”
    となり、実行できませんでした。

    以下のように元SQL全体をかっこで括るとデータの取得ができました。
    今後はWITHで括って取得するようにしていけば問題ないと思います。

    WITH AAA as
    ((
    SELECT A.A, A.B, B.C, C.D
    FROM TBL_A A
    INNER JOIN TBL_B B ON A.A = B.A
    AND B.B=1
    INNER JOIN TBL_C C ON A.A = C.A
    AND C.C=1
    ) UNION (
    SELECT A.A, A.B, B.C, NULL AS D
    FROM TBL_A A
    LEFT JOIN TBL_B B ON A.A = B.A
    AND B.B=2
    ))
    select count(*) from AAA

    出来れば、WITHで括らずに取得できるようにしていただければ幸いです。

    #19668 返信
    松原正和
    キーマスター

    toyaba さんこんにちは。
     
    A5:SQL Mk-2ではDBサーバーにSQLを投げてレスポンスを表示しているだけなので、レスポンス自体返ってこない場合、修正は難しいかもしれません。
     
    DB接続ライブラリのバージョンが上がっている、Version 2.18.0 のベータ版はいかがでしょうか?
     

    #19704 返信
    toyaba
    ゲスト

    松原様
    version 2.18.0 beta 48で実行してみましたが
    状況変わりませんでした。

    なお、macでの開発経験がありましたので
    他のDBクライアントツール(dbeaver)で確認したところ
    同じSQLを発行したところ結果が返ってきます。

    一応、バージョンにかかわらず
    リンクテーブルのUNIONの取得ができる方法をご提示いただいていますし、
    改修が容易でないとのことですので、
    本件、いったんクローズとして構いません。

8件の投稿を表示中 - 1 - 8件目 (全8件中)
返信先: SQLエディタでUNIONを含むSQL実行結果が常に0件となるで#19311に返信
あなたの情報:




コメントは受け付けていません。