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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 21:25   #1
kira_truelove
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию БД библиотеки.

Доброго времени суток.
Мне нужно было создать упрощенный вариант базы данных библиотеки, реализую я это в MS Server, на основе 3х таблиц. В "users" будет храниться имя и идентификатор пользователя, в таблице "books" - название и идентификатор книги. В 3ей таблице "total" будут храниться идентификаторы пользователей и идентификаторы книг, которые они взяли, и даты когда они их взяли, так же присутствует столбец, который будет нулевым, если книгу еще не вернули. Вот код программы:

Код:
Create database biblioteka
Use biblioteka;


Create table users
(UserID int NOT NULL Identity (1,1) Primary key,
UserName nvarchar(50) NOT NULL)

Create table books
(BookID int NOT NULL Identity (1,1) Primary key,
BookName nvarchar(50) NOT NULL)

Create table total
(UserID int NOT NULL Primary key,
BookID integer,
Data date,
Dolg integer)
Как связать правильно эти таблицы чтобы запросы работали?
И как будет выглядеть запрос о должниках?
kira_truelove вне форума Ответить с цитированием
Старый 15.12.2011, 05:23   #2
irt
Пользователь
 
Аватар для irt
 
Регистрация: 24.02.2011
Сообщений: 20
По умолчанию

Цитата:
И как будет выглядеть запрос о должниках?
Смотря что нужно получить. Ниже только имена:
Код:
SELECT users.UserName FROM users WHERE users.UserID IN (SELECT UserID FROM total WHERE Dolg=0 GROUP BY UserID);
irt вне форума Ответить с цитированием
Старый 16.12.2011, 10:38   #3
zamaevac
Пользователь
 
Аватар для zamaevac
 
Регистрация: 22.03.2010
Сообщений: 88
По умолчанию

Цитата:
Сообщение от kira_truelove Посмотреть сообщение
Как связать правильно эти таблицы чтобы запросы работали?

Код:
Create database biblioteka
Use biblioteka;


Create table users
(UserID   int NOT NULL AUTO_INCREMENT PRIMARY KEY,
 UserName varchar(50) NOT NULL);

Create table books
(BookID   int NOT NULL AUTO_INCREMENT PRIMARY KEY,
 BookName varchar(50) NOT NULL);

Create table total
(ID     int NOT NULL AUTO_INCREMENT PRIMARY KEY,
 UserID int,
 BookID int,
 Data   date,
 Dolg   int,
 FOREIGN KEY (UserID) REFERENCES users (UserID)
 FOREIGN KEY (BookID) REFERENCES books (BookID));

Запрос о должниках написан в посте выше, но хочу добавить запрос не только по должникам, но и по книгам, которые они должны - это тоже не менее полезно знать, а то с одних имён должников проку не много (что трясти то будем с них? ):


Код:
select users.UserName as 'Имя должника', books.BookName as 'Наимен. книги'
  from users,books,total
  where total.UserID = users.UserID
    and total.BookID = books.BookID
    and total.Dolg = 0
  order by users.UserName
zamaevac вне форума Ответить с цитированием
Старый 18.12.2011, 17:04   #4
kira_truelove
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию

Только в SQL Serever создание таблицы total будет так выглядеть:
Код:
Create table total
(ID     int NOT NULL Identity (1,1) PRIMARY KEY,
UserID int FOREIGN KEY REFERENCES users (UserID),
BookID int FOREIGN KEY REFERENCES books (BookID),
 Data   date,
 Dolg   int)

Последний раз редактировалось kira_truelove; 18.12.2011 в 17:33.
kira_truelove вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зависимость библиотеки от библиотеки ds.Dante C# (си шарп) 2 07.07.2011 12:55
Библиотеки Кристинка89 Общие вопросы C/C++ 8 23.03.2011 09:59
Библиотеки alexprey Общие вопросы Delphi 3 01.09.2010 22:33
библиотеки ShenDy Общие вопросы C/C++ 5 25.07.2008 21:45
Библиотеки в С++ MIKI Свободное общение 5 10.06.2008 20:15