2

画像がアクティブとしてマークされていて、ユーザーがリンクをクリックした場合は、アクティブな画像に移動する必要があります。それ以外の場合は、アップロードされた(MAX)最新の画像に移動する必要があります。私の最初の選択は機能しますが、完全ではありません。

これが私の選択です:

    select
    b.image_id, b.active, c.id as event_id
from event.dbo.lite() a
left outer join event.dbo.dia_tracker b on a.code = b.patient_id 
    and image_id = (select max(image_id) from event.dbo.dia_tracker where patient_id = {$patient->hex})
left outer join event.dbo.ev c on a.code = c.patient_id and c.task_id in ('WR','RC') and c.status<>0
where a.code = {$patient->hex}

これが私の新しい選択で、少し助けが必要です。

select 
    image_id, 
    active,
    case when active <>1 than image_id = (select max(image_id) from event.dbo.dia_tracker where patient_id = 'DSMA')
from event.dbo.dia_tracker

where active = '1' and image_id = (select max(image_id) from event.dbo.dia_tracker where patient_id = 'DSMA')

それは少し混乱したATMです。isnullを使用して、より少ないコード行でより多くのことを実行できると考えていました。

アップデート:

select 
    *,
    ISNULL(active,image_id) as  image
from event.dbo.dia_tracker

    where active = '1' and image_id = (select max(image_id) from event.dbo.dia_tracker where patient_id = 'DSMA')

まだ助けが必要です。

4

2 に答える 2

1

active = 1の場合、サブクエリはグループ化され、結果はアクティブな画像に取得されます。それ以外の場合は最新の画像になります。

select *, t1.image_id as  image
from event.dbo.dia_tracker t1
WHERE EXISTS (select 1
              from event.dbo.dia_tracker t2                      
              where t2.patient_id = 'DSMA'
              group by case when t2.active = '1' then t2.image_id end
              having MAX(t2.image_id ) = t1.image_id)
于 2013-02-08T22:44:34.927 に答える
1

関連するすべてのDDLとサンプルデータを投稿するとはるかに簡単になりますが、このようなものを試して、image_id

SELECT COALESCE(
  (SELECT image_id FROM dia_tracker WHERE patient_id = 'DSMA' AND active=1), 
  (SELECT MAX(image_id) FROM dia_tracker WHERE patient_id = 'DSMA')
) AS image_id

そしてそれ(image_id)があなたが探している行を一意に識別するなら、あなたは試すことができます

SELECT * FROM dia_tracker
WHERE image_id = (SELECT COALESCE(
  (SELECT image_id FROM dia_tracker WHERE patient_id = 'DSMA' AND active=1), 
  (SELECT MAX(image_id) FROM dia_tracker WHERE patient_id = 'DSMA')
) AS image_id)
于 2013-02-08T23:24:14.157 に答える