Search code examples
sqlsql-serverjoinleft-joinsql-query-store

left join two tables on a non-unique column in right table


I have two tables in sql server and i wanna select and join some data from these table.the first tables have some customer like:

---------------
customer   id   
Dave       1    
Tom        2     
---------------

and second table i table of purchases that includes list of last purchases with cost and which customer bought that Product:

------------------
product    date       customer id
PC         1-1-2000   1
phone      2-3-2000   2
laptop     3-1-2000   1
------------------

i wanna select first table (customers info) with last date of their purchases! i tried left join but that doesn't give me last purchases becuase customer id is not unique in second table! how can i do this function with SQL server query? Regards


Solution

  • Use the not exists clause for the win!

    select c.customer, p.*
    from   Customer as c
    inner  join Purchase as p
    on     p.customer_id = c.id
    where  not exists (
           select 1
           from Purchase as p2
           where p2.customer_id = p.customer_id
           and p2.date > p.date
           )