2017-05-14 9 views
1

v_xml_cdrというテーブルがあり、次の列:uuid,start_epochおよびend_epochがあります。私はテーブルのstart_epochを照会できるようにしてから、uuidを受け取り、start_epochが以前に見つかったuuidおよびend_epochより小さいか等しいstart_epoch以下のすべてのコールについて再度テーブルにクエリします以前に発見されたものと同等以上である。start_epoch。ここまでは私がこれまで持っていたものですが、空の結果セットを返します。 5行を返します。Postgres Multiple select

select count(uuid) 
from v_xml_cdr 
where start_epoch 
     <= (select start_epoch as reject_start 
      from v_xml_cdr 
      where uuid = '5c076428-3790-11e7-868a-xxxxx' 
     ) 
    and end_epoch 
     >= (select start_epoch as reject_start 
      from v_xml_cdr 
      where uuid = '5c076428-3790-11e7-868a-xxxxx' 
     ); 
+1

あなたのクエリはあなたが(多分start_epoch AND end_epoch' BETWEEN(SELECT ...)WHERE 'てみてください)を2回同じ副選択を実行することを除いて、正常に見えます。あなたは、クエリがあなたが望むことをしないことを証明するサンプルデータを提供できますか?副選択がNULLではなく単一の行を戻すことを確認できますか? –

+0

サンプルデータと望ましい結果が実際に役立ちます。 –

+0

ご協力ありがとうございます。次のエラーが表示されています。式として使用されるサブクエリによって複数の行が返されます。 – user3896519

答えて

1

私はあなたがこれをしたいと思う:

select count(uuid) 
from v_xml_cdr xc join 
    (select min(start_epoch) as minse 
     from v_xml_cdr xc1 
     where uuid = '5c076428-3790-11e7-868a-xxxxx' 
    ) xc1 
    on xc.start_epoch <= xc1.minse and 
     xc.end_epoch >= xc1.minse; 
+0

こんにちはGordon、ありがとうございました。これは私の問題を解決しました。さらに1つの質問がありますが、count(uuid)が5より大きい場合のみリストする方法はありますか? – user3896519

+0

が 'having count(uuid)> 5' – Glenn

+0

@ user3896519というクエリに追加されます。 。 。私はそれがどういう意味か分かりません。これは、1つの列と1つの行だけを返します。カウントが5を超えない場合は、何を返すべきですか? –

関連する問題