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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 15:58   #1
SeRhy
Форумчанин
 
Аватар для SeRhy
 
Регистрация: 19.10.2007
Сообщений: 168
Вопрос Не могу составить запрос

Здравствуйте.
У меня есть задание:
Имеется база, с 2 таблицами. Books (id, title, author_id, page_count, publish_date); Authors (id, name, birthday). Написать запрос, который выведет список Авторов с количеством напечатанных ими книг

Я даже не догадываюсь как это осуществить. так как раньше работал с простыми запросами.... Посоветуйте пожалуйста чегото....

Зарание спасибо
SeRhy вне форума Ответить с цитированием
Старый 04.04.2011, 16:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
select name,count(autor_id)
from books
left join autors on (autor_id=autors.id)
group name
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2011, 16:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы забыли указать, какая у Вас СУБД.
но, в общем случае запрос:
Код:
select Authors.id, Authors.name, count(*) as КоличествоПечатныхКниг 
  from Books, Authors 
    where Authors.id = Booksюauthor_id 
    group by Authors.id, Authors.name
выведет список авторов с количеством напечатанных книг.

Внимание. При этом те авторы, которые не имеют НИ ОДНОЙ печатной книги
в данныю выборку вообще не попадут.
Если нужно, чтобы они тоже присутствовали,
тогда немного переделайте запрос, вместо связи через WHERE ... сделайте связь через LEFT JOIN ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.04.2011, 16:23   #4
serres
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 77
По умолчанию

Цитата:
Сообщение от SeRhy Посмотреть сообщение
Здравствуйте.
У меня есть задание:
Имеется база, с 2 таблицами. Books (id, title, author_id, page_count, publish_date); Authors (id, name, birthday). Написать запрос, который выведет список Авторов с количеством напечатанных ими книг

Я даже не догадываюсь как это осуществить. так как раньше работал с простыми запросами.... Посоветуйте пожалуйста чегото....

Зарание спасибо
Сначало JOIN таблицы по author_id и id (в таблице Authors) а потом надо надо count - author.name
serres вне форума Ответить с цитированием
Старый 04.04.2011, 16:29   #5
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
Сообщение от SeRhy Посмотреть сообщение
Здравствуйте.
У меня есть задание:
Имеется база, с 2 таблицами. Books (id, title, author_id, page_count, publish_date); Authors (id, name, birthday). Написать запрос, который выведет список Авторов с количеством напечатанных ими книг

Я даже не догадываюсь как это осуществить. так как раньше работал с простыми запросами.... Посоветуйте пожалуйста чегото....

Зарание спасибо
В вашей моделе у одной книги может быть только один автор. С реальностью это не совпадает. Для мепинга книг с авторами принято использовать ещё одну таблицу.
ssdm вне форума Ответить с цитированием
Старый 04.04.2011, 16:33   #6
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

SELECT a.*, count(b.id) FROM `Authors` a JOIN `Books` b ON a.id = b.author_id

Ых, пока общался с дочкой уже ответили ))))
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить запрос. ?? Agapov_stas SQL, базы данных 8 21.07.2010 19:32
Не могу составить запрос на выборку из нескольких таблиц :( Semidarckness SQL, базы данных 3 23.05.2010 15:27
как правельно составить запрос к базе данных? не могу найти ошибку... Человек_Борща SQL, базы данных 6 27.02.2010 17:22
Не могу составить запрос bullvinkle SQL, базы данных 2 04.10.2009 22:55
составить запрос к таблицам T1 и T2 MonteCarlos SQL, базы данных 13 03.02.2008 14:05