Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка данных с использованием данных других полей [D6]


cyborg ©   (2004-12-18 20:24:00) 

Помогите составить строку SQL запроса на вставку данных?
База Acess через компоненты ADO.

Нужно в таблицу "Приход" вставить номера (индексы) данных из других таблиц.

Написал это

             SQL.Clear;
             SQL.Add('INSERT INTO Приход( [Номер], [Номер раздела], [Номер товара], [Цена] )');
             SQL.Add('Values( '+ParsedStrings[1]+',');
->            SQL.Add('SELECT Номер FROM Раздел WHERE (Название="'+CurrentRazdel+'"),');
             SQL.Add('SELECT Номер FROM Товар WHERE (Название="'+ParsedStrings[2]+'"),');
             SQL.Add(ParsedStrings[4]+')');
             ExecSQL;

Ругается на первую строчку с селектом. Знаю что криво делаю :), но не знаю как прямо сделать.
В общем нужно вставить в таблицу "Приход" номера индексов (автоинкриментные поля) названий товара из других таблиц "Раздел" и "Товар".

Или как получить автоинкриментный индекс последней записи в базе?


cyborg   (2004-12-20 08:29:00) [1]


> [9] sniknik ©   (19.12.04 12:23)

Да там как раз с сортировкой подходит.


sniknik   (2004-12-19 12:23:00) [2]

а по DISTINCT значит нет? вообщето это более естественное решение для приведенного случая, GROUP BY всетаки предполагает еще дополнительно агрегатные поля где значения сгрупировання по нужному полю.


cyborg   (2004-12-19 09:46:00) [3]


> [6] sniknik ©   (19.12.04 00:24)

По GROUP BY работает. :)
Спасибо!


cyborg   (2004-12-19 09:24:00) [4]


> p.s. если пользуешся SQL-лем желательно его хоть чуть чуть
> изучить.

Вот изучаю :), просто мне некоторая логика непонятня, типа команд Join и других подобных.


sniknik   (2004-12-19 00:24:00) [5]

по разному можно DISTINCT, GROUP BY по контексту от того что нужно

p.s. если пользуешся SQL-лем желательно его хоть чуть чуть изучить.


cyborg   (2004-12-18 22:52:00) [6]

Ещё вопрос.
Есть много текстовых записей, нужно отобрать все, но повторяющиеся чтобы были по одному разу.
Как сформулировать: SELECT field FROM table?


sniknik   (2004-12-18 21:03:00) [7]

> так вот как указать, что нужно только одну строку возвращать, первую найденную?
TOP 1


sniknik   (2004-12-18 21:02:00) [8]

SELECT @@IDENTITY
например (а вообще по смыслу где нужен)
следующей командой после инсерта


cyborg   (2004-12-18 20:57:00) [9]

С ошибкой разобрался, там оказывается в скобки запрос нужно помещать.
Ещё вопрос, в этом отборе может вернуться несколько запрошенных строк, так вот как указать, что нужно только одну строку возвращать, первую найденную?

> [1] sniknik ©   (18.12.04 20:49)

А куда его писать? Товар.@@IDENTITY, или как?


sniknik   (2004-12-18 20:49:00) [10]

> Или как получить автоинкриментный индекс последней записи в базе?
@@IDENTITY


Наверх

Титульная страница Поиск, карта сайта Написать письмо