Я не прошу за меня решить задачки) Я просто не могу понять - как правильно обозночать и использовать и как соотносить Join SQL и join из реляционной алгебры. Я разобрался с более простыми операциями - объединение, пересечение, вычитание, выборка и процецирование. но с джоинами не нашел нормального объяснения (тета-джоины, квази-джоины, натуральные джоины.... и все во всех статья сразу ударяются в множества подмножества из которых я даже половину знаков не знаю......) Или может кто сталкивался с похожим ступором и скинет хорошую статью или еще лучше на ютубе ролик С этим я уже ознакамливался. https://m.habrahabr.ru/post/145381/ Также может кто нибудь в двух словах объяснить реляционное деление (я так понял у них нет представления в sql) На всех ресурсах очень размазанное описание для докторов математических наук)☻ В приложении задачи с которым я в ступоре. Я знаю как написать их на SQL но как на реляционной алгебре? Также как - реляционные знаки печатать на клавиатуре? Ну может есть спец символы через alt + число?
Сделал вот такой шаблончик в SQL Fiddle http://sqlfiddle.com/#!9/a36e02/62/1 И в ходе выполнения у меня возник вопрос - в чем различие двух таких запросов? Код (Text): -- Выбираем всех пользователей из москвы которые имеют задание select * from rd2,rd3,rd1 where rd2.department_num = rd3.num and rd3.city='Москва' and rd2.user_num=rd1.user_num; Код (Text): -- Делаем тоже самое джоином select * from rd2 inner join rd3 on rd2.department_num = rd3.num and rd3.city='Москва' inner join rd1 on rd2.user_num=rd1.user_num; В чем различие в работе SQL (по производительности что лучше? Я подозреваю что inner join? - и как правильно называются две эти операции? Ну вторая понятно что inner join, а первая тогда что? Это ведь не просто выборка с условиями (сравнение же проходит по полям которые выбираются, а не по прописанному руками значению) Есть ли вообще разница между двумя данными подходами?? И вообще круто если кто то покажет как такое отобразить на языке реляционной алгебры. ПС -а как в SQL Fiddle делать подписи к табличкам? (если такое возможно)
Я так - понял прочитав умные книжки, что первый вариант это Умножение (картезианский продукт☻) с выборкой. (т.е. мы в начале выводим всем возможные комбинации всех всех таблиц, которые перечисленны) А второй вариант - это иннер join (и он выбирает только нужные поля? т.е. вначале полностью выводится таблица select * from rd2 а к ней уже присоединяются только нужные поля (т.е. вроде как быстрее должно работать, хотя с другой стороны он же в любом случае должен сделать обход всей таблицы что бы стравить значения в полях к которым присоедниняется..