Can I do like this
select *
from tableA JOIN
tableB ON tableA.id=tableB.id
where tableB.someId = select id from otherTable where anotherId = 1
I have 2 where, possible?
Can I do like this
select *
from tableA JOIN
tableB ON tableA.id=tableB.id
where tableB.someId = select id from otherTable where anotherId = 1
I have 2 where, possible?
You can use = when the subquery returns only 1 value.
When subquery returns more than 1 value, you will have to use IN or EXISTS:
Using IN:
select *
from tableA JOIN
tableB ON tableA.id=tableB.id
where tableB.someId IN (select id
from otherTable
where anotherId = 1)
IN determines whether a specified value matches any value in a subquery or a list.
Read more here.
USING EXISTS:
select *
from tableA JOIN
tableB ON tableA.id = tableB.id
where EXISTS (select id
from otherTable
where anotherId = 1
and tableB.someId = otherTable .id)
You could use the IN Clause:
select *
from tableA JOIN
tableB ON tableA.id = tableB.id
where tableB.someId IN (select id
from otherTable
where anotherId = 1)
You could also use the EXISTS Condition:
select *
from tableA JOIN
tableB ON tableA.id = tableB.id
where EXISTS (select id
from otherTable ot
where anotherId = 1
and tableB.someId = ot.id)
= would also work fine, if the subquery returned a single value.
select *
from tableA
JOIN tableB ON tableA.id=tableB.id
join otherTable ON tableb.id = othertable.id
where otherTable.anotherId = 1