All pastes #112470 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-08-02 23:16 UTC
rendered paste body
Orig sql query, to find the current status of a payment.  There is a payment_statuses table, if a payment has 4 statuses, 3 of them will have updated=true and the most recent will have updated=false

select A.id,A.order_id,A.payment_type,A.amount,P.status,P.date as input_date,
U.first_name,U.last_name,U.display_name
from payments as A 
left join payment_statuses as P on(A.id=P.payment_id)
left join users as U on (P.updater_id=U.id)
where P.updated='f' and P.status !='7'
order by A.order_id


if i want to select latest status AND when it was entered, i used this one.  but its  giving duplicate info.  query above returns 10 rows, one below returns 15
select *
from payments as A 
left join payment_statuses as P on(A.id=P.payment_id)
left join payment_statuses as X on(A.id=X.payment_id)
where
P.status ='1' and X.status!='7' and X.updated='f'
order by A.order_id