Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Sql запросы. Выборка данных Select. / 3 сообщений из 3, страница 1 из 1
21.12.2012, 02:24
    #38087617
armanimoney
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запросы. Выборка данных Select.
ВОт задание

вот мои таблицы которые начеркал



а команды
1) SELECT * FROM kniga WHERE (kol_ekz = 1)
2) SELECT kod_kn, № bileta FROM kniga, abiniment, ch WHERE Fio ="Мельников Николай Дмитриевич" GROUP BY kod_kn
3) SELECT fio_ch FROM ch, aboniment WHERE otmetka = no AND DATA

Помогите написать запросы или что-то поправить
...
Рейтинг: 0 / 0
21.12.2012, 14:51
    #38088223
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запросы. Выборка данных Select.
armanimoney,

Сообщите сроки и суииу.
...
Рейтинг: 0 / 0
21.12.2012, 16:44
    #38088516
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sql запросы. Выборка данных Select.
Таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE Books FREE (;
 Id I,;
 Author C(50),;
 Name C(100),;
 YearPubl N(4),;
 Price N(10),;
 Number N(4),;
 Annotation M,;
 Disposed L )
CREATE TABLE Readers FREE (;
 Id I,;
 FIO C(30),;
 Address C(50),;
 Phone C(10),;
 LibCard C(10) )
CREATE TABLE Abonement FREE (;
 Id I,;
 Id_Book I,;
 Id_Rreader I,;
 IssueDate D,;
 ReturnDate D )

Типа код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
SET DATE GERMAN
CLOSE TABLES

* текущая двта
ldCurrentDate=DATE()

* книги, имеющиеся в одном экземпляре
SELECT * FROM books WHERE number=1

* книги из билета Мельникова Н.Д.
SELECT PADR(b.author-','-b.name,30) as name;
 FROM abonement a INNER JOIN books b ON a.id_book=b.id INNER JOIN readers r ON a.id_reader=r.id;
 WHERE r.FIO='Мельников Николай Дмитриевич'

* читатели с задолженностью больше 4 месяцев
SELECT r.FIO;
 FROM abonement a INNER JOIN readers r ON a.id_reader=r.id;
 WHERE ISBLANK(a.ReturnDate) AND GOMONTH(ldCurrentDate,-4)>a.IssueDate

* книга, наиболее популярная весной 2012
SELECT PADR(b.author-','-b.name,30);
 FROM books b INNER JOIN;
 (SELECT TOP 1 id_book, count(*) as cnt FROM abonement;
   WHERE IssueDate<={^2012-05-31} AND (ISBLANK(ReturnDate) OR ReturnDate>={^2012-03-01});
   GROUP BY id_book;
   ORDER BY cnt DESC) t ON b.id=t.id_book

* читатели, имеющие на руках книги на сумму более 1000
SELECT r.FIO;
 FROM abonement a INNER JOIN books b ON a.id_book=b.id INNER JOIN readers r ON a.id_reader=r.id;
 WHERE ISBLANK(a.ReturnDate) AND a.IssueDate<=ldCurrentDate;
 GROUP BY r.FIO;
 HAVING SUM(b.price)>1000
 
* книга с наибольшим количеством экземпляров в наличии
SELECT PADR(bk.author-','-bk.name,30);
 FROM books bk INNER JOIN;
 (SELECT top 1 b.id, (b.number-NVL(t.cnt,0)) as num;
   FROM books b LEFT JOIN;
   (SELECT id_book, COUNT(*) as cnt FROM abonement;
    WHERE ISBLANK(ReturnDate) AND IssueDate<=ldCurrentDate;
    GROUP BY id_book) t ON b.id=t.id_book;
   ORDER BY num DESC) tk ON bk.id=tk.id

Конечно, если нужны Id (книг, читателей), то можно убирать внешние SELECTы. Ну и если можно делать не в один запрос, а используя последовательность команд и запросов - то можно сделать и более оптимальные конструкции

P.S. Кстати, а б он е мент...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Sql запросы. Выборка данных Select. / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]