Вопрос № 125587: Ув. Эксперты, подскажите пожалуйста книги по SQL, недавно закончил изучать Мартин Грубер - Изучение SQL. Но эта книга мне кажется устаревшей 1993 год, и материал выложен не очень, особенно хромают примеры. Заранее спасибо....Вопрос № 125589: Подскажите пожалуйста, как и что можно сделать?
есть две таблицы authors и books
В них поля:
id, author_name
book_title, authors_id
соответственно.
Нужно, чтобы можно было у книги посмотреть всех её авторов (может бы...Вопрос № 125604: Здравствуйте уважаемые эксперты!
Помогите мне со следующим вопросом:
Пытаюсь интегрировать свой сайт с форумом PHPBB3, а именно сделать чат на главной странице сайта, сообщения которого берутся из определённого поста на форуме.
...
Вопрос № 125.587
Ув. Эксперты, подскажите пожалуйста книги по SQL, недавно закончил изучать Мартин Грубер - Изучение SQL. Но эта книга мне кажется устаревшей 1993 год, и материал выложен не очень, особенно хромают примеры. Заранее спасибо.
Отвечает: Силантьев А.В.
Здравствуйте, Орленко Максим Васильевич!
Если Вас интересует более тесное знакомство с Oracle,
то я рекомендую:
Oracle. Проектирование баз данных.
Энсор, Стивенсон. Издательство O'Reilly.
Книги этого издательства отличаются хорошим качеством.
Также
Oracle для профессионалов
Том Кайт
Здесь
http://www.sqlbooks.ru/books/sqlfunctions.rar
Вы можете скачать книгу по функциям
Oracle, DB2, Ms SQL Server, MySQL, PostgreSQL
Но это англоязычный источник
Ну и, конечно, применение знаний на практике.
Рекомендую
http://sql-ex.ru/
Сайт с онлайн задачами по SQL
Задачи решеаются на Ms SQL Server 2005
Там же Вы можете, по желанию, пройти сертификацию своих знаний и навыков,
а также получить консультации.
Ответ отправил: Силантьев А.В. (статус: 2-ой класс)
Ответ отправлен: 01.03.2008, 19:44 Оценка за ответ: 5 Комментарий оценки: Большое спасибо. Этот сайт http://sql-ex.ru/ очень интересный.
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Орленко Максим Васильевич!
Предлагаю посетить:
http://all-ebooks.com/databases
там Вы сможете выбрать интересующую литературу.
А книгу Мартина Грубера не надо называть "устаревшей". Относитесь к ней как к азбуке, которую так же изучают, получают базовые знания, и больше никогда к ней не возвращаются.
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 01.03.2008, 20:06 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет. Буду относится к ней как к азбуке и советовать всем начинающим :)
Если Вас интересует стандарт языка, то очень рекомендую книгу SQL. Программирование издательства Бином, авторы: Кауфман, Матсик, Спенсер. Сам читал, очень доволен. Кроме того подберите ещё литературу по той СУБД, с которой работаете: у каждого сервера свои сильные и слабые стороны, которые лучше всего раскрываются именно такой литературой.
Загляните ещё на сайт www.librus.ru - там масса книг, думаю, найдёте много интересного.
--------- Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 03.03.2008, 09:16
Вопрос № 125.589
Подскажите пожалуйста, как и что можно сделать?
есть две таблицы authors и books
В них поля:
id, author_name
book_title, authors_id
соответственно.
Нужно, чтобы можно было у книги посмотреть всех её авторов (может быть несколько имён).
И найти книги одного конкретного автора (у них тоже может быть несколько книг).
Всё очень упрощаю, но суть осталась прежней.
Я делал так:
в поле authors_id сохранял строчку, где перечисляются все идентификаторы авторов, заключенные в скобки.
Таким образом я могу разобрав эту строчку перечислить всех авторов.
А сделав поиск идентификатора в скобках найти книги написанные нужным автором.
Но может быть есть, что-то более специальное?
Сейчас использую ado к acces, но это же касаеться и mysql.
Отвечает: Yurio
Здравствуйте, Талипов А Н!
я бы сделал следующим образом:
в таблицу books добавил бы поле id_book и удалил бы поле authors_id.
Создал бы еще одну таблицу, скажем books_autors c полями id_book и id_autor.
Тогда книги автора:
select a.* from books a, books_autors b, authors c where b.id_book=a.id_book and c.id=b.id_autor and c.author_name="Петров Петр Петрович";
авторы книги:
select с.* from books a, books_autors b, authors c where b.id_book=a.id_book and c.id=b.id_autor and a.book_title="Программирование от А до Я";
Ответ отправил: Yurio (статус: 3-ий класс)
Ответ отправлен: 01.03.2008, 19:44 Оценка за ответ: 5 Комментарий оценки: Здорово!
Даже и не подозревал, что так можно.
Выглядит логично.
А вот на практике, нужно попробовать.
Надеюсь, что у меня получиться!
Отвечает: Силантьев А.В.
Здравствуйте, Талипов А Н!
Присоединяюсь к ответу Yurio,
но с небольшими добавлениями:
1)Видоизменил запрос на получение книг автора:
select b.book_title
from authors a, books_authors ba, books b
where a.author_name="Петров Петр Петрович"
and a.author_id=ba.author_id and ba.book_id=b.book_id
order by b.book_title
Смысл этой операции состоит в:
-получении упорядоченного по алфавиту списка книг
-получении более эффективного запроса, так как мы
производим не соединение всех соответствующих строк всех таблиц
и потом отбираем нужные, а соединяем только те строки таблиц,
которые относятся к указанному автору.
2)Аналогично для получения авторов книги:
select a.author_name
from books b, books_authors ba, authors a
where b.book_title="Программирование от А до Я
and b.book_id=ba.book_id and ba.author_id=a.author_id
order by a.author_name
Ответ отправил: Силантьев А.В. (статус: 2-ой класс)
Ответ отправлен: 01.03.2008, 20:34 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Более осмысленно. Особенно с этими a, b, ba.
Не могу сказать, что всё понял.
Как уже написал нужно попробовать на практике.
Но по идеи должно сработать как мне нужно.
Вопрос № 125.604
Здравствуйте уважаемые эксперты!
Помогите мне со следующим вопросом:
Пытаюсь интегрировать свой сайт с форумом PHPBB3, а именно сделать чат на главной странице сайта, сообщения которого берутся из определённого поста на форуме.
Итак следующим запросом я получаю сообщения и id пользователей из таблицы :
SELECT * FROM `torrent`.`phpbb_posts` WHERE `forum_id`='5' AND `topic_id`='49' ORDER BY `post_time` DESC LIMIT 10
Мне нужно модифицировать этот запрос таким образом, чтобы получить ещё и имя каждого пользователя по id. Имена(username) хранятся в `torrent`.`users`
SELECT tp.*,u.username
FROM `torrent`.`phpbb_posts` tp, `torrent`.`users` u
WHERE tp.forum_id='5' AND tp.topic_id='49'
and tp.user_id=u.user_id
ORDER BY tp.post_time DESC LIMIT 10
Ответ отправил: Силантьев А.В. (статус: 2-ой класс)
Ответ отправлен: 01.03.2008, 20:49 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за ответ, небольшое изменение и запрос заработал как нужно.