![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка данных с использованием данных других полей [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