Соединение таблиц sql

Всем доброго времени суток?!

Я новичок в SQL, выполняя задание наткнулась на такую схему:

select count(*) 
from testdat, 
     testart 
where testdat.testart = testart.code 
  and testart.meaning = 'function' 
  and testdat.valid is null;

Может мне пожалуйста кто-нибудь помочь объяснить этот кусочек кода? Впервые сталкиваюсь с таким соединением через . и =

Всех заранее благодарю?


Ответы (1 шт):

Автор решения: Герман Борисов

Соединение через запятую select … from a,b — это элемент синтаксиса первого стандарта SQL 1987 года. Соответствует CROSS JOIN в более поздних версиях.

При добавлении WHERE условия сравнения столбцов из обеих таблиц, CROSS JOIN становится эквивалентным INNER JOIN, например select … from a,b where a.field=b.field == select … from a cross join b where a.field=b.field == select … from a inner join b on a.field=b.field

Таким образом приведённый запрос эквивалентен

select count(*) 
from testdat 
join testart on testdat.testart = testart.code 
where testart.meaning = 'function' 
  and testdat.valid is null;
→ Ссылка