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

Рейтинг: 0Ответов: 1Опубликовано: 05.06.2023

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

Я новичок в 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;