1

Тема: Допоможiть будь ласка з вирiшенням завдання

Завдання здається не важким, але не виходить його вирішити. Надіюсь на вашу допомогу.
База даних містить дві таблиці (завдання під ними):

Post's attachments

Безымянный.jpg 76.65 kb, 337 downloads since 2015-05-06 

2

Re: Допоможiть будь ласка з вирiшенням завдання

Пари розділів з будь-якого посібника по базам даних було б достатньо. Ану давайте, пишіть, як ви пробували.

Подякували: koala1

3

Re: Допоможiть будь ласка з вирiшенням завдання

пробувала онлайн-уроки http://www.w3schools.com/, http://www.quackit.com/ http://databases.about.com/

Ось один із варіантів моїх спроб

proc SQL;
    title 'Author UNION Book';
    select NAME from Book
    WHERE TYPE='Роман'
    union
    select NAME from Author;

не знаю що тут не так

4

Re: Допоможiть будь ласка з вирiшенням завдання

Roxy123 написав:

пробувала онлайн-уроки http://www.w3schools.com/, http://www.quackit.com/ http://databases.about.com/

Ось один із варіантів моїх спроб

proc SQL;
    title 'Author UNION Book';
    select NAME from Book
    WHERE TYPE='Роман'
    union
    select NAME from Author;

не знаю що тут не так

UNION лише об'єднує результати двох запитів в один. Вам же треба з'єднати таблицю з авторами і таблицю з книгами. Використайте INNER JOIN.

Подякували: koala, Roxy1232

5

Re: Допоможiть будь ласка з вирiшенням завдання

Форта Б. Освой самостоятельно SQL
Цікавенька книжка, почитайте, там коротко, багато кому сподобалась

Подякували: Roxy1231

6

Re: Допоможiть будь ласка з вирiшенням завдання

SELECT book.name, author.name
FROM Book
where type='Роман'
INNER JOIN Author
ON author.name = book.name
ORDER BY book.name;

Яка тут помилка? підкажіть будь ласка

7

Re: Допоможiть будь ласка з вирiшенням завдання

Roxy123 написав:

SELECT book.name, author.name
FROM Book
where type='Роман'
INNER JOIN Author
ON author.name=book%2Ename
ORDER BY book.name;

Яка тут помилка? підкажіть будь ласка

Ви з'єднуєте таблиці на імені автора і назві книжки. Тобто, рядки вважатимуться одним рядком, якщо ім'я автора і назва книги однакова. У вас для цього є більш підходящі поля в обох таблицях.

Подякували: Roxy1231

8

Re: Допоможiть будь ласка з вирiшенням завдання

Ви маєте на увазі використати alias?

SELECT author.name AS authors, book.name AS books
from Author
where book.author_id=author.author_id
AND book.type='Роман'
INNER JOIN Book
ON author.name = book.name
ORDER BY book.name;

9

Re: Допоможiть будь ласка з вирiшенням завдання

Roxy123 написав:

Ви маєте на увазі використати alias?

SELECT author.name AS authors, book.name AS books
from Author
where book.author_id=author.author_id
AND book.type='Роман'
INNER JOIN Book
ON author.name=book%2Ename
ORDER BY book.name;

Ні. Ваша проблема в тому, НА чому ви з'єднуєте таблиці. INNER JOIN співставить деяким рядкам з першої таблиці по одному рядку з іншої. От ви й кажете (в рядку з ON): зроби-но мені таблицю з книгами, назви яких співпадають з іменами авторів. Сенсу в такій таблиці немає. Проте у вас в таблиці з книгами, є поле, яке дозволяє визначити автора.

Подякували: Roxy1231

10

Re: Допоможiть будь ласка з вирiшенням завдання

SELECT book.name, author.name
FROM Book
where type='Роман'
INNER JOIN Author
ON book.author_id=author.author_id
ORDER BY book.name;

так правильно?

(чомусь Microsoft SQL Server Management Studio пише Incorrect syntax near the keyword 'INNER'.)

11

Re: Допоможiть будь ласка з вирiшенням завдання

Так, тільки WHERE після ON.

Подякували: Roxy1231

12

Re: Допоможiть будь ласка з вирiшенням завдання

quez написав:

Так, тільки WHERE після ON.


Велике Дякую, виручив :)