| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > помогите с SQL -запросом |
| Автор: FireAlex 19.4.2005, 08:00 |
| база на MSAccess, ado такие таблицы. tblDATE -------------------------- DateId : счетчик fldate : DateTime tblOstatok ---------------------- IdOperator : integer DateId : integer Ostatok : integer tblOperator ------------------------- IdOperator : счетчик FIO : string в таблице tblOstatok по датам и операторам хранится остаток товара (в штуках). нужно написать такой запрос чтобы выдал список операторов и остаток товара на заданную дату ближайшую слева или равную ей. дата задается как параметр. то есть допустим задаю дату 12.12.2004 - находится запись в таблице tblOstatok с датой, меньшей или равной 12.12.2004 и выводится FIO оператора, дата, и остаток на эту дату и так далее по всем операторам... проблема как определить такую дату? |
| Автор: DDX 19.4.2005, 08:33 | ||
| FireAlex Если честно, не понял твой вопрос. тебе нужно помочь составить запрос, или сделать дату пареметром, или проблема в том, чтобы найти равную или первую по меньшинству? если дата нужна как параметр, то в тексте запрос пишешь что-то типа "... tblDATE.flDate<= [Дата:].." если нужна первая совпадающая, или меньше, что-то типа того:
|
| Автор: DimW 19.4.2005, 09:04 | ||||
Если я тебя правильно понял, то запрос будет возвращать оператора который формировал остаток на дату>=указанную дату. Добавлено @ 09:13
DDX можешь пояснить что это - [Дата:]? что то я не встречал такова синтаксиса в SQL... обычно параметр указывается как - :Дата |
| Автор: DDX 19.4.2005, 09:33 |
| DimW этоя применительно к Access, на автопилоте) ты конечно прав только ты ещё, кажется, пропустил AS при задании таблиц: tblDATE tD ,tblOSTATOK tOST ,tblOPERATOR tOP |
| Автор: DimW 19.4.2005, 09:40 | ||
а ты праверь!!! |
| Автор: DDX 19.4.2005, 09:46 |
| и правда!) век живи - век учись) DimW, извини.. |
| Автор: DimW 19.4.2005, 13:02 | ||
ды ладно че ты... |
| Автор: FireAlex 22.4.2005, 08:57 | ||
| наконец то руки дошли... ваши запросы немного не работают в том плане что выводится список всех операторов у которых остаток <=:pDate и ещё нельзя использовать псевдоним tOp - это я к DimW:)... я наваял в итоге такой запрос но он выводит повторяющиеся записи: скажем оператор1 12.12.2004 100 оператор1 13.12.2004 200 pDate = 14.12.2004. нужно чтобы первую строку не выводил. подскажите что не так в этом запросе:
|
| Автор: DimW 22.4.2005, 09:19 | ||||||
Аргументы пожалуйста...
это можно решить так:
|
| Автор: FireAlex 22.4.2005, 11:05 | ||||
по первой части:
а ты попробуй. TOP -эта такая инструкция SQL и когда пытаюсь выполнить твой запрос то получаем месагу - SYNTAX ERROR in FROM CLAUSE. кстати твой новый запрос
тоже дублирует операторов... |
| Автор: DimW 22.4.2005, 13:09 | ||||
сори...
мда, не досмотрел... запрос нехочит решаться стандартным SQL... |
| Автор: Dimich 22.4.2005, 13:41 | ||
З.Ы. В Оракле будет работать, если ошибок синтаксических не наделал, а в аксесе должно.... |
| Автор: Dimich 22.4.2005, 14:10 |
| Не спешите пробовать - не правильно работает вложенный селект, зараза |
| Автор: Dimich 22.4.2005, 15:16 | ||
Вот рабочий вариант, только оговорка - таблица tbldate должна иметь уникальность по полю fldate
|
| Автор: DimW 26.4.2005, 07:47 |
| Dimich, как я и предпологал такая конструкция в аксэсе не прокатила (говорит, что из подчененного запроса невозможно возвратить более одного поля ), а в оракле наура!!! По моему (касательно аксэса) праблема такова селекта не решаема... Темнемение, такую структуру я встретил первый раз, даже вчера ее уже исмользовал (удобно блин!!!!). Dimich держи законный + FireAlex - если умудришься, не забывай об остальных!!! |
| Автор: Veniamin 15.5.2008, 23:09 | ||||||
база в Access, приложение на Delphi соединено через ADO. Хочу сделать запрос на вывод всех записей из главной таблицы в которых кабинеты следующие 211, 213. Пишу следующее:
При выполнении запроса выводится следующее: Несоответствие типов данных в выражении условия отбора. В чём причина? А если писать так:
то выводится след.ошибка : Missing operator or semicolon В главной таблице все поля имеют тип текстовый, кроме номера, он имеет тип - счётчик. Проверил в Query Analyzer-е SQL-Server 2000 подобный запрос
- всё работает, выводит все поля с заданным условием, а с Access что не так? |
| Автор: Deniz 16.5.2008, 06:26 | ||||
Dimich, DimW, а почему не попробовать вместо:
Добавлено через 1 минуту и 46 секунд Veniamin, создай новое сообщение. |