次のクエリがあります
select m.movementid, m.orderid, m.pickupdate, m.pickupnotes,
b.bin_size, b.bin_type,
l.address, l.suburb, l.postcode, l.state,
if(rs.run_action = 'Pick', if (r.run_state = 'Active' or r.run_state='Ready', 1, 0), 0) as active_on_pick
from bb_movement m
inner join bb_bins b on b.bin_id = m.bin_id
inner join bb_location l on l.locationid = m.locationid
inner join bb_runsheet rs on rs.movement_id = m.movementid
inner join bb_run r on r.run_id = rs.run_id
where m.mvtstate = 'Active'
order by m.locationid, m.pickupdate
active_on_pick 列に各 motionid の 0 または 1 が含まれる結果を生成したいと考えています。特定の MovementID が bb_run に追加されると、レコードが bb_runsheet テーブルに存在します (bb_run には、多くの bb_runsheet レコードが含まれる場合があり、プライマリには MovementID が含まれます)。
私が抱えている問題は、動きが実行中の場合 (つまり、基準と bb_runsheet テーブルのエントリに一致する bb_run レコードがある場合)、結果データセットに 2 つの行が表示されることです-例:
mvt_id active_on_pick
21 0
21 1
私が欲しいのは 21 と 1 だけです。サブクエリと他のバリエーション (motionid によるグループ化など) を試しましたが、うまくいくようです。私はmysqlを使用しています