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

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



а команды
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
Sql запросы. Выборка данных Select.
    #38088223
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
armanimoney,

Сообщите сроки и суииу.
...
Рейтинг: 0 / 0
Sql запросы. Выборка данных Select.
    #38088516
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы
Код: 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
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Sql запросы. Выборка данных Select.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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