Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 12:00   #1
carrew
 
Регистрация: 22.05.2013
Сообщений: 6
По умолчанию запрос из 3 таблиц

Не могу реализовать следующий запрос: Кто из авторов никогда не писал статьи в соавсторстве.

Структура 3 таблиц.
Вот моя реализация нос ошибкой "SUM_ART": invalid identifier
Код:
SELECT Author.id_author, Author.name, SUM(i.id_author) sum_art, Article.title
FROM Authors Author
INNER JOIN id i ON i.id_author = Author.id_author
INNER JOIN Article Article ON i.id_article = Article.id_article
WHERE sum_art = 1
GROUP BY sum_art;
Работаю в Oracle.
carrew вне форума Ответить с цитированием
Старый 25.05.2013, 12:54   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT R.id_author,Authors.name
  FROM (SELECT id_author,COUNT(*) AS CountAuthor
          FROM id
          GROUP BY id_author) R
    LEFT JOIN Authors ON Authors.id_author=R.id_author
  WHERE R.CountAuthor=1
Код:
SELECT Authors.id_author,Authors.name
  FROM Authors
  WHERE (SELECT COUNT(*) FROM id WHERE id.id_author=Authors.id_author)=1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.05.2013, 13:53   #3
carrew
 
Регистрация: 22.05.2013
Сообщений: 6
По умолчанию

Все равно не верно выводит запрос результат.

Код:

SELECT R.id_author,Authors.name
  FROM (SELECT id_author,COUNT(*) AS CountAuthor
          FROM id
          GROUP BY id_author) R
    LEFT JOIN Authors ON Authors.id_author=R.id_author
  WHERE R.CountAuthor=1


Вот структура заполненых данных всех 3 таблиц. В результате должен вывестись автор Andrey Ivanov, Edward Jons, Endi Gutmans.

Последний раз редактировалось carrew; 25.05.2013 в 14:01.
carrew вне форума Ответить с цитированием
Старый 25.05.2013, 14:41   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
--число автров статьи
select id_article, count(*) as countautor 
from id 
group by id_article

--авторы писавшие в сооавтростве (имеющие статьи с числом авторов >1)
select id_autor  
from id
inner join ( select id_article, count(*) as countautor 
             from id group by id_article
             group by id_article 
         ) as a2 on a2.id_article =id.id_article
where a2.countauror>1 

--прочие авторы
select * 
from authors
where id_autor not in ( select id_autor 
                        from id
                        inner join ( select id_article, count(*) as countautor 
                                     from id group by id_article
                                     group by id_article 
                                   ) as a2 on a2.id_article =id.id_article
                        where a2.countauror>1  )
Код:
select id_article, count(*) as countautor 
from id 
group by id_article

select id_autor, max(countautor) as multi
from id
inner join ( select id_article, count(*) as countautor 
             from id group by id_article
             group by id_article 
         ) as a2 on a2.id_article =id.id_article
group by id_autor

select * 
from authors
left join ( select id_autor, max(countautor) as multi
            from id
            inner join ( select id_article, count(*) as countautor 
                         from id group by id_article
                         group by id_article 
                       ) as a2 on a2.id_article =id.id_article
            group by id_autor 
          ) as m2 on m2.id_autor.authors.is_autor
where m2.multi<=1
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 25.05.2013 в 14:51.
evg_m вне форума Ответить с цитированием
Старый 25.05.2013, 15:12   #5
carrew
 
Регистрация: 22.05.2013
Сообщений: 6
По умолчанию

смог только
Цитата:
select id_article, count(*) as countautor
from id
group by id_article
запустить. Дальше ошибки, сделал исправления название столбоцов все равно не работает.
carrew вне форума Ответить с цитированием
Старый 25.05.2013, 20:21   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так
Код:
SELECT Authors.id_author,Authors.name
  FROM Authors
  WHERE NOT EXISTS(
    SELECT *
      FROM id,(SELECT id_article,COUNT(*) AS CountAuthor FROM id GROUP BY id_article) AS R
      WHERE Authors.id_author=id.id_author AND id.id_article=R.id_article AND R.CountAuthor>1)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.05.2013, 20:42   #7
carrew
 
Регистрация: 22.05.2013
Сообщений: 6
По умолчанию

Что означает ошибка missing right parenthesis ?
carrew вне форума Ответить с цитированием
Старый 25.05.2013, 21:02   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Орёт, что нет правой скобки. А вообще запрос для T-SQL. Как там оракл это поймет не скажу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.05.2013, 01:09   #9
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

По виду оба запроса из сообщения #2 для Oracle валидны.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос выборки из 2-х таблиц Андрей79 SQL, базы данных 1 04.03.2012 23:05
Запрос с нескольких таблиц Lokos БД в Delphi 3 15.04.2011 07:43
Запрос с объединением таблиц vedro-compota SQL, базы данных 6 28.12.2010 12:57
Запрос из двух таблиц SERG1980 БД в Delphi 8 18.11.2010 23:05
запрос из 2-х таблиц Lokos SQL, базы данных 9 23.12.2009 00:55