Гуру SQL АУ-У-У!!! Сдаюсь((((

KLIM

Заблокирован
Регистрация
25 Июн 2009
Сообщения
943
Реакции
1
Баллы
0
Адрес
Архангельск 2 л\з
рассуждения:
1) если есть какое-то название класса, в табличке ships, а в табличке Classes его нет
То тогда мой запрос был бы ошибычным и возвращал ошибку на количество записей, так как у меня вылетел бы этот класс из результата, соотвественно выдало бы ошибку на несоответствие количества результатов записей, а мой запрос выдает на несовпадение значений двух записей что соответствует двум последним вашим запросом один в один, тоже две неправильных записи. Значит количество классов все же верно подсчитывает.
 

nvv13

Member
Регистрация
14 Июл 2009
Сообщения
82
Реакции
0
Баллы
6
Адрес
Архангельск
То тогда мой запрос был бы ошибычным и возвращал ошибку на количество записей, так как у меня вылетел бы этот класс из результата, соотвественно выдало бы ошибку на несоответствие количества результатов записей, а мой запрос выдает на несовпадение значений двух записей что соответствует двум последним вашим запросом один в один, тоже две неправильных записи. Значит количество классов все же верно подсчитывает.
не факт, Я так понял, что таблички в разных базах, по разному заполнены
количество строк может и совпасть +1 -1, но строки другие

результаты обоих запросов, не показывает?
 

KLIM

Заблокирован
Регистрация
25 Июн 2009
Сообщения
943
Реакции
1
Баллы
0
Адрес
Архангельск 2 л\з
не факт, Я так понял, что таблички в разных базах, по разному заполнены
количество строк может и совпасть +1 -1, но строки другие

результаты обоих запросов, не показывает?
Результат запроса показывает только с первой базы. А со второй только сообщение типа: "расхождение в количестве строка, больше на 2", или "несовпадение результатов, 2 значения". Количество строк у нас зависит от количества классов, тогда если как вы говорите, то получается, что какой то класс вылетел вообще, а один вышел как Null.
 

KLIM

Заблокирован
Регистрация
25 Июн 2009
Сообщения
943
Реакции
1
Баллы
0
Адрес
Архангельск 2 л\з
Хрен с этой задачей, 57(3) мое решение (верное). nvv13, половину взял из твоего запроса для задачи 56))):
select qwe1.class, qwe1.Sunks
from
(SELECT class, sum(cl) as Sunks
from
(
select class,cl
from (
select class=isnull( (select class from Ships where Ships.name=Outcomes.ship) ,
(select class from Classes where Classes.class=Outcomes.ship) )
,cl=1
from Outcomes where result = 'sunk'
) as d1 where class is not null
union all
select class,cl=0 from Classes
) as uvi
GROUP BY class) as qwe1 inner join

(select class
from (
select Classes.class as class,ships.name as name
from Classes inner join ships on Classes.class=ships.class
union
select Classes.class as class, Outcomes.ship as name
from Classes inner join Outcomes on Classes.class=Outcomes.ship
) as zap
group by class
having count(name)>2) as qwe2
on qwe1.class=qwe2.class
where qwe1.sunks>0
Может кому то это интересно и он предложит свой вариант, с удовольствием бы его посмотрел.
 
Сверху