0

これが私のコードです:

SELECT t.obsid, t.seq_nbr, t.charge_ao_str
    , t.approved_exposure_time, t.status, t.uninterrupt
    , t.phase_constraint_flag, t.multitelescope
    , t.multitelescope_interval, t.constr_in_remarks
    , t.remarks, t.window_flag, t.roll_flag, t.monitor_flag
    , t.pre_id, t.pre_min_lead, t.pre_max_lead, r.roll_constraint
    , r.roll_180, r.roll, r.roll_tolerance, w.window_constraint
    , w.tstart, w.tstop, p.phase_period, p.phase_epoch
    , p.phase_start, p.phase_end, p.phase_start_margin, p.phase_end_margin 
FROM target t, rollreq r, timereq w, phasereq p 

WHERE t.obsid=r.obsid 
    AND t.obsid=w.obsid 
    AND t.obsid=p.obsid 
    AND t.charge_ao_str='13' 
    AND (t.status <> 'canceled' OR t.status <> 'untriggered') 
    AND 
    (
        (t.uninterrupt='Y' OR t.uninterrupt='P') OR 
        (t.phase_constraint_flag='Y' OR t.phase_constraint_flag='P') OR 
        (t.multitelescope='Y' OR t.multitelescope='P') OR 
        (t.constr_in_remarks='Y' OR t.constr_in_remarks='P') OR 
        (t.window_flag='Y' OR t.window_flag='P') OR 
        (t.roll_flag='Y' OR t.roll_flag='P') OR 
        (t.monitor_flag='Y' OR t.monitor_flag='P')
    )

t.charge_ao_str='13'ステートメント内ののみを認識し、他にはWHERE何も認識しないようです。WHEREステートメントの残りの部分を機能させるにはどうすればよいですか?

4

2 に答える 2

0

JOIN それが機能するかどうかを確認してみてください

SELECT t.obsid, t.seq_nbr, t.charge_ao_str
    , t.approved_exposure_time, t.status, t.uninterrupt
    , t.phase_constraint_flag, t.multitelescope
    , t.multitelescope_interval, t.constr_in_remarks
    , t.remarks, t.window_flag, t.roll_flag, t.monitor_flag
    , t.pre_id, t.pre_min_lead, t.pre_max_lead, r.roll_constraint
    , r.roll_180, r.roll, r.roll_tolerance, w.window_constraint
    , w.tstart, w.tstop, p.phase_period, p.phase_epoch
    , p.phase_start, p.phase_end, p.phase_start_margin, p.phase_end_margin 
FROM target t 
INNER JOIN rollreg r ON t.obsid=r.obsid 
INNER JOIN timereq w ON t.obsid=p.obsid 
INNER JOIN phasereq p ON t.obsid=p.obsid 
WHERE  
    AND t.charge_ao_str='13' 
    AND (t.status <> 'canceled' OR t.status <> 'untriggered') 
    AND 
    (
        (t.uninterrupt='Y' OR t.uninterrupt='P') OR 
        (t.phase_constraint_flag='Y' OR t.phase_constraint_flag='P') OR 
        (t.multitelescope='Y' OR t.multitelescope='P') OR 
        (t.constr_in_remarks='Y' OR t.constr_in_remarks='P') OR 
        (t.window_flag='Y' OR t.window_flag='P') OR 
        (t.roll_flag='Y' OR t.roll_flag='P') OR 
        (t.monitor_flag='Y' OR t.monitor_flag='P')
    )
于 2012-07-27T14:40:51.900 に答える
0

JOINまず、コンマの代わりに構文を使用することを検討します。JOIN以下の更新されたクエリと構文を参照してください。

次に、すべてのWHERE条件の要件を満たす記録があると確信していますか?

SELECT t.obsid, t.seq_nbr, t.charge_ao_str
    , t.approved_exposure_time, t.status, t.uninterrupt
    , t.phase_constraint_flag, t.multitelescope
    , t.multitelescope_interval, t.constr_in_remarks
    , t.remarks, t.window_flag, t.roll_flag, t.monitor_flag
    , t.pre_id, t.pre_min_lead, t.pre_max_lead, r.roll_constraint
    , r.roll_180, r.roll, r.roll_tolerance, w.window_constraint
    , w.tstart, w.tstop, p.phase_period, p.phase_epoch
    , p.phase_start, p.phase_end, p.phase_start_margin, p.phase_end_margin 
FROM target t
INNER JOIN rollreq r
    ON t.obsid=r.obsid 
INNER JOIN timereq w
    ON t.obsid=w.obsid 
INNER JOIN phasereq p 
    ON t.obsid=p.obsid 
WHERE t.charge_ao_str='13' 
    AND t.status NOT IN ('canceled', 'untriggered') 
    AND 
    (
        t.uninterrupt IN ('Y', 'P') OR 
        t.phase_constraint_flag IN ('Y','P') OR 
        t.multitelescope IN ('Y','P') OR 
        t.constr_in_remarks IN ('Y', 'P') OR 
        t.window_flag IN ('Y', 'P') OR 
        t.roll_flag IN ('Y', 'P') OR 
        t.monitor_flag IN ('Y', 'P')
    )
于 2012-07-27T14:38:58.780 に答える