оператор больше sql - сравнение числа строк в двух группах

Forums:

Рассмотрим тему проката дисков (лицензионных , естественно, так как пиратские прокатывать нельзя)
Задача =

Узнать какие диски (точнее- КАКИЕ ФИЛЬМЫ или КАКИЕ ДИСКИ - см. далее сами запросы) взяли ,но не вернули.

Особенности =

  • Есть отдельная таблица с информацией о выдаче фильма = Vidacha
  • и есть отдельная таблица , в которой фиксируется факт возврата диска с фильмом = Vozvrat

наряду с эти есть таблица с названиями фильмов и прочие, которые нас не интересуют.

Идея нашего решения будет следующая - мы попытаемся сравнить число записей с для данного фильма в "выдаче " с числом записей , опять же для этого фильма в "возврате" - если записей о возврате меньше , чем, записей о выдаче (по-идее - максимум на одну) - то можно сделать вывод что фильм ещё не вернули.

Теперь попробуем написать запрос.

_____________________________
мы , безусловно, воспользуемся функцией подсчёта строк count()

vedro-compota's picture

На мой "логика" должна быть следующей =

select Film.Nazvanie from Film where (  select Vidacha.id_filma , count (*) 
from Vidacha where Vidacha.id_filma = Film.id_filma group by  Vidacha.id_filma ) >
 (  select Vozvrat.id_filma , count (*) from Vozvrat where Vozvrat.id_filma = Film.id_filma group by  Vozvrat.id_filma )

___________________________

но честно говоря, надо подумать - как это оформить..........

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

вот так лучше =

select Film.Nazvanie from Film where (  select count (*)
from Vidacha where Vidacha.id_filma = Film.id_filma group by  Vidacha.id_filma ) >
 (  select count (*) from Vozvrat where Vozvrat.id_filma = Film.id_filma group by  Vozvrat.id_filma )
 
___________________________

ОШИБКА! - ВНИМАНИЕ!

count(*) пишется слитно! , то есть надо записать всё тоже самое, но без пробелов поСЛе count =

(КАКИЕ ФИЛЬМЫ взяли и не вернули) =

select Film.Nazvanie from Film where (  select count(*)
from Vidacha where Vidacha.id_filma = Film.id_filma group by  Vidacha.id_filma ) >
 (  select count(*) from Vozvrat where Vozvrat.id_filma = Film.id_filma group by  Vozvrat.id_filma )
 
___________________________

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

_____________
матфак вгу и остальная классика =)