Форум программистов, компьютерный форум, киберфорум
Наши страницы

MS Access

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
hacher
4 / 4 / 1
Регистрация: 21.04.2009
Сообщений: 61
#1

Запрос выводит лишние записи. Вместо 3-х значений выводит 9 - MS Access

12.09.2011, 23:09. Просмотров 1584. Ответов 11
Метки нет (Все метки)

Есть три таблицы показаны на картинке,
пишу запрос:
SQL
1
2
3
4
5
6
7
8
9
SELECT 
Дата_Реал , 
(Реализация.Стоим-(Поставка.Стоим-(Склад.Цена_п*Склад.Кол_во)))
FROM Реализация,Поставка,Склад,Поставщик
WHERE  
Реализация.Дата_реал >= :p1 AND 
Реализация.Дата_реал <=:p2 AND 
Реализация.Шифр=Поставка.Шифр AND 
Реализация.Шифр=Склад.Шифр
и вместо 3-х значений выводит 9
p1 и p2 ето начальная и конечная дата
0
Миниатюры
Запрос выводит лишние записи. Вместо 3-х значений выводит 9   Запрос выводит лишние записи. Вместо 3-х значений выводит 9  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2011, 23:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запрос выводит лишние записи. Вместо 3-х значений выводит 9 (MS Access):

Вместо значений поля выводит код - MS Access
Есть таблица Род в которой два поля - Код (счетчик) и Род(текстовое), ее связываю с другой таблицей, в которой также поле Род с помощью...

Отчет. Выводит код связанной таблицы, вместо Наименования - MS Access
Здравствуйте! Я продвигаюсь. Сейчас затык в отчете не выводит наименоваение контракта, только код( Подскажите, пожалуйста!

Запрос выводит не всё - MS Access
Добрый день! Есть таблица со статьями расходов и таблица с финансовыми операциями по этим статьям. Надо вывести все статьи независимо от...

Запрос выводит ошибку - MS Access
Добрый день. Я новичок в access, помогите, пожалуйста. У меня есть запрос, в котором есть еще 3 запроса. Мне нужно чтобы если один из...

Запрос с выбором по дате не выводит данные с начально и конечной датой - MS Access
Здравствуйте. Сделал БД в аксесс 2013, в которой есть таблицы: 1)Сотрудники (Табномер-число, ФамилияИмяОтчество - строка,Должность -...

Написать запрос который выводит номер соответствующий хотя бы одной цифре введённого номера - MS Access
Добрый день всем! Кто поможет, как написать запрос в БД. Есть две колонки: 1. Счётчик 2. Номера (образец: 12 09 78 45 01) через...

11
hacher
4 / 4 / 1
Регистрация: 21.04.2009
Сообщений: 61
13.09.2011, 02:22  [ТС] #2
я как всегда не придумал нормальное название и никто не отвечает
0
ironegg
1897 / 774 / 29
Регистрация: 11.02.2010
Сообщений: 1,567
13.09.2011, 07:32 #3
Цитата Сообщение от hacher Посмотреть сообщение
SQL
1
...FROM Реализация,Поставка,Склад,Поставщик...
если между таблицами не установлены связи, то запрос работает с их декартовым произведением. покажите схему данных
1
alvk
5260 / 3250 / 154
Регистрация: 12.08.2011
Сообщений: 8,016
13.09.2011, 15:10 #4
Цитата Сообщение от hacher Посмотреть сообщение
и вместо 3-х значений выводит 9
3*3=9 всё верно
делайте связи в запросе.
1
hacher
4 / 4 / 1
Регистрация: 21.04.2009
Сообщений: 61
13.09.2011, 20:59  [ТС] #5
вот схема данных
Запрос выводит лишние записи. Вместо 3-х значений выводит 9
и alvk я не понимаю почему 3*3=9 там, понимал бы написал бы сам
0
ironegg
1897 / 774 / 29
Регистрация: 11.02.2010
Сообщений: 1,567
14.09.2011, 00:14 #6
Цитата Сообщение от hacher Посмотреть сообщение
SQL
1
...FROM Реализация,Поставка,Склад,Поставщик...
судя по тому, что между именами таблиц нет необязательного пробела, запрос писался вручную. в таком случае следовало включить в предложение FROM инструкции INNER JOIN.
если с этим возникают затруднения, попробуйте воспользоваться для создания заготовки запроса конструктором запросов(добавьте в запрос таблицы, убедитесь что связи между таблицами в области схемы данных конструктора установлены верно, перетяните в рабочую область конструктора нужные поля...). после можно переключиться в режим SQL и вписать сложные условия отбора вручную

Добавлено через 20 минут
Цитата Сообщение от hacher Посмотреть сообщение
я не понимаю почему 3*3=9
если между таблицами не установлена связь, то имеем декартово произведение таблиц. каждая записи таблицы А соединяется со всеми записями таблицы Б.
попробуйте из своего запроса убрать предложение WHERE и все станет понятно. запрос вернет десятки небывалых записей
1
alvk
5260 / 3250 / 154
Регистрация: 12.08.2011
Сообщений: 8,016
14.09.2011, 03:22 #7
выложите mdb.
1
hacher
4 / 4 / 1
Регистрация: 21.04.2009
Сообщений: 61
14.09.2011, 12:32  [ТС] #8
Цитата Сообщение от alvk Посмотреть сообщение
выложите mdb.
mdb у меня просто как бд а сам запрос я в Delphi пишу(так надо)
вот mdb
Склад.rar
я так понимаю и в Delphi и в acesss sql запросы одинаковы
0
alvk
5260 / 3250 / 154
Регистрация: 12.08.2011
Сообщений: 8,016
14.09.2011, 14:08 #9
Цитата Сообщение от hacher Посмотреть сообщение
я так понимаю и в Delphi и в acesss sql запросы одинаковы
кто же его знает, в Акцесс Jet SQL, какой в Дэльфи, не знаю.

Ну вот же у вас в запрос1 связи есть, а в Дельфи как запрос выглядит?

T-SQL
1
UPDATE Склад INNER JOIN (Поставка INNER JOIN Реализация ON Поставка.Шифр = Реализация.Шифр) ON Склад.Шифр = Реализация.Шифр SET;
1
hacher
4 / 4 / 1
Регистрация: 21.04.2009
Сообщений: 61
14.09.2011, 14:13  [ТС] #10
запрос в Делфи у меня ето просто я пробовал сегодня и не получилось
если можете напишите правильный запрос я попробую его втиснуть в делфи
0
alvk
5260 / 3250 / 154
Регистрация: 12.08.2011
Сообщений: 8,016
14.09.2011, 14:24 #11
с датами смотрите сами.
T-SQL
1
2
3
SELECT Реализация.Дата_реал, (Реализация.Стоим-(Поставка.Стоим-(Склад.Цена_п*Склад.Кол_во))) AS Выражение1
FROM (Реализация INNER JOIN Поставка ON Реализация.Шифр = Поставка.Шифр) INNER JOIN Склад ON Поставка.Шифр = Склад.Шифр
WHERE (((Реализация.Дата_реал)>=#9/1/2011# And (Реализация.Дата_реал)<=#9/2/2011#) AND ((Реализация.Шифр)=[Поставка].[Шифр] And (Реализация.Шифр)=[Склад].[Шифр]));
1
hacher
4 / 4 / 1
Регистрация: 21.04.2009
Сообщений: 61
14.09.2011, 19:32  [ТС] #12
Спасибо большое
0
14.09.2011, 19:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 19:32
Привет! Вот еще темы с ответами:

Написать запрос который выводит фамилии студентов по рейтингу (в начале с максимальным средним баллом, и по убыванию) - MS Access
Написать запрос который выводит фамилии студентов по рейтингу (в начале с максимальным средним баллом, и по убыванию)

Мне нужно создать запрос который выводит заданное количество строк из таблицы, при этом строки должны быть выб - MS Access
Мне нужно создать запрос который выводит заданное количество строк из таблицы, при этом строки должны быть выбраны рандомно. ...

Запрос выводит "Код", а не "Наименование" - MS Access
Добрый день! В таблице &quot;Финансовые операции&quot; находятся &quot;Коды&quot; контрагентов, &quot;Наименование&quot; которых находится в таблице &quot;Контрагенты&quot;....

Лишние записи - MS Access
При вводе в форму &quot;номера&quot;, происходит выбор конкретной записи следующим кодом: Dim Набор_С_Номерами As Recordset Set...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.