ホーム › フォーラム › A5:SQL Mk-2掲示板 › SQLエディタでUNIONを含むSQL実行結果が常に0件となる
- このトピックには7件の返信、1人の参加者があり、最後にtoyabaにより1年、 8ヶ月前に更新されました。
-
投稿者投稿
-
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
となります。松原正和キーマスターtoyaba さんこんにちは。
すみません、再現できませんでした。SQLはそのままサーバーに送信され、戻ってきた結果を表示するだけなので、特定のSQLで結果が出ないのはよくわかりません。
UNION の前または後ろのSELECT文単体では結果が戻ってくるでしょうか? 結合条件でtimestamp などがあり、タイムゾーンの影響を受けて結果が返らない等の可能性はあるでしょうか?toyabaゲスト松原様
回答遅くなりました。
UNION句の
結合条件などtimestamp方は存在していますが、
此処のSELECT句でデータの取得はできております。toyabaゲスト松原様
情報が1つ漏れておりました。
SELECT句の取得対象にリンクテーブルが含まれております。
接続先のテーブルだけの場合は取得できることを確認しましたので
リンクテーブルが含まれているときに、UNIONの結果が取得できないことになります。お手数ですが調査のほどよろしくお願いします。
松原正和キーマスター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ヶ月前に松原正和が編集しました。
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で括らずに取得できるようにしていただければ幸いです。
松原正和キーマスターtoyaba さんこんにちは。
A5:SQL Mk-2ではDBサーバーにSQLを投げてレスポンスを表示しているだけなので、レスポンス自体返ってこない場合、修正は難しいかもしれません。
DB接続ライブラリのバージョンが上がっている、Version 2.18.0 のベータ版はいかがでしょうか?
toyabaゲスト松原様
version 2.18.0 beta 48で実行してみましたが
状況変わりませんでした。なお、macでの開発経験がありましたので
他のDBクライアントツール(dbeaver)で確認したところ
同じSQLを発行したところ結果が返ってきます。一応、バージョンにかかわらず
リンクテーブルのUNIONの取得ができる方法をご提示いただいていますし、
改修が容易でないとのことですので、
本件、いったんクローズとして構いません。 -
投稿者投稿