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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 14:06   #1
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию Access Запросы

Помгите пожалуйста создать структурированые запросы к БД на Access. Вобщем там о поездах. 1 таблица это информация о поездах. 2ая о продажах билетов на них.
Нужно создать такие запросы:
1. Посчитать сумму прибыли от проданых билетов по дате
2. Выбрать из бд поезда на которые проданые все билеты.

ПОмогите пожалуйста написать запросы на языке SQL. Пожалуйста.
Файл с создаными таблицами и заполнеными я прикрепил. Вот с запросами засада (((
Вложения
Тип файла: rar db1.rar (8.0 Кб, 13 просмотров)
werser вне форума Ответить с цитированием
Старый 23.05.2009, 15:39   #2
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

вот что я смог сдела. В том запросе что считает сумму за какую-то дату нужно дописать эту дату чтоб полностью работал как надо
Вложения
Тип файла: zip db1.zip (10.4 Кб, 13 просмотров)
rocklistener...
5naip вне форума Ответить с цитированием
Старый 23.05.2009, 15:51   #3
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

SELECT Поезда.№поезда
FROM Поезда INNER JOIN Продажи ON Поезда.№поезда=Продажи.№поезда
WHERE Поезда.Количествомест=Продажи.Колпр оданбил;

Что значит:INNER JOIN Продажи ON Поезда.№поезда=Продажи.№поезда
WHERE Поезда.Количествомест=Продажи.Колпр оданбил;

Нельзя как то это сделать что б было Select в Select?
werser вне форума Ответить с цитированием
Старый 23.05.2009, 15:51   #4
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

Вот отета операция: INNER JOIN
werser вне форума Ответить с цитированием
Старый 24.05.2009, 00:44   #5
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

соединение двух таблиц.
у них общее поле - номер поезда. Вот по нему они и соединяются.
http://www.skillz.ru/dev/php/article...NER_OUTER.html
http://office.microsoft.com/ru-ru/ac...314871049.aspx
rocklistener...
5naip вне форума Ответить с цитированием
Старый 24.05.2009, 01:13   #6
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

А можно как то обойтись без INNER JOIN
werser вне форума Ответить с цитированием
Старый 24.05.2009, 11:07   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

правильный запрос будет такой:
Код:
SELECT * FROM  Поезда
  WHERE Поезда.Количествомест in 
   (select SUM(Продажи.Колпроданбил) FROM 
       Продажи WHERE Поезда.№поезда = Продажи.№поезда 
    GROUP BY Продажи.№поезда)
p.s. у Вас в примере нет ни одного поезда, на который проданы все билеты... добавьте, например, строчку в продажи:
на 6-й поезд продано 190 билетов (дата продажи - любая)
тогда, суммарно на 6-й поезд получается 30+80+190 = 300 и он попадёт в выборку.

Последний раз редактировалось Serge_Bliznykov; 24.05.2009 в 11:22.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.05.2009, 11:11   #8
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

у меня на работе книжка лежит по SQL. Там, кажется, написано, что такие кострукции (соединения) работают медленнее, чем такие варианты какой написали вы.
ну,думаю,в данном конкретном случае,это значения не имеет из-за размера бд.
rocklistener...
5naip вне форума Ответить с цитированием
Старый 24.05.2009, 11:12   #9
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

Вариант с where будет работать медленее, так как он сначала делает горизонтальную вырезку, а затем вертикальную. Когда записей в бд мало может это и не заметно, но вот когда количество записей существенное вот тогда начинаются тормоза
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 24.05.2009, 11:15   #10
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

Можете пожалуйста второй написать как с where потому что разница по времени не важна. Главное сказали что б без INNER JOIN
werser вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формы, отчёты, запросы в БД Access Xeon332 Помощь студентам 8 20.01.2009 12:19
Запросы к БД limon PHP 7 28.11.2008 20:29
Запросы в access Мария100684 Microsoft Office Access 1 06.10.2008 15:48
запросы в Access Натали Microsoft Office Access 3 14.03.2007 11:38