Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mySQL outer join

I have 2 tables for which I need to run a query on

Table1 has 2 fields: l_id, and name

Table2 also has 2 fields: l_id, and b_id

I need to run a query to get the "name" and "l_id" for all the entries in table1 that do not have an entry in table2 for a given b_id.

Hope this makes some sense

like image 558
Señor Reginold Francis Avatar asked Dec 12 '22 19:12

Señor Reginold Francis


2 Answers

select t1.*
from Table1 t1
left outer join Table2 t2 on t1.l_id = t2.l_id
    and t2.b_id = @SomeValue
where t2.l_id is null
like image 142
D'Arcy Rittich Avatar answered Jan 11 '23 21:01

D'Arcy Rittich


You can use an outer join, but I find a sub-query is a little more straightforward. In your case selecting everything from table1 that does not have an id in table2. Reads better...

SELECT * FROM table1 WHERE l_id NOT IN (SELECT l_id FROM table2);
like image 27
Jason McCreary Avatar answered Jan 11 '23 23:01

Jason McCreary