Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Условие в запросе  [new]
ddfgfg
Member

Откуда:
Сообщений: 72
Доброго времени суток. Вопрос такой: как вставить запись из второй таблицы в первую и значение поля ввода, если в первой такого значения нет. Вот код
p1:=Edit1.Text;
DataModule1.ADOQuerty.Close;
DataModule1.ADOQuerty.SQL.Clear;
DataModule1.ADOQuerty.SQL.Add('INSERT INTO table1(period, id)');
DataModule1.ADOQuerty.SQL.Add('SELECT '+quotedstr(p1)+', id FROM table2');

Т.е. если в поле period нет записи равной значению p1, то добавляем записи.
Таблицы в MSSQL, код пишу в Delphi7.
Заранее спасибо всем откликнувшимся.
11 июн 12, 13:01    [12698981]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
not exists
11 июн 12, 13:06    [12698993]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
ddfgfg
Member

Откуда:
Сообщений: 72
Извиняюсь, но я раньше не использовал not exists. Как его применить?
11 июн 12, 14:35    [12699250]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
ddfgfg
Извиняюсь, но я раньше не использовал not exists. Как его применить?

http://msdn.microsoft.com/ru-ru/library/ms188336.aspx
пример Д
11 июн 12, 14:39    [12699281]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
ddfgfg
Member

Откуда:
Сообщений: 72
Это так что ли?
p1:=Edit1.Text;
DataModule1.ADOQuerty.Close;
DataModule1.ADOQuerty.SQL.Clear;
DataModule1.ADOQuerty.SQL.Add('INSERT INTO table1(period, id)');
DataModule1.ADOQuerty.SQL.Add('WHERE NOT EXISTS');
DataModule1.ADOQuerty.SQL.Add('(SELECT '+quotedstr(p1)+', id FROM table2)');
11 июн 12, 18:30    [12699974]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
ddfgfg
Это так что ли?
А это вы где прочитали?
11 июн 12, 18:35    [12699987]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3604
ddfgfg,

Для начала структура таблиц и связь. А то догадываться никто небудет. Ну и один из вариантов реализации указали - осталось только научиться пользоваться поиском.
Кстати, тут за вас никто ничего делать небудет. На мысль натолкнули, а дальше сами гребите.
11 июн 12, 21:14    [12700385]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
ddfgfg
Member

Откуда:
Сообщений: 72
SELECT p.FirstName, p.LastName, e.JobTitle
FROM Person.Person AS p 
JOIN HumanResources.Employee AS e
   ON e.BusinessEntityID = p.BusinessEntityID 
WHERE NOT EXISTS
(SELECT *
   FROM HumanResources.Department AS d
   JOIN HumanResources.EmployeeDepartmentHistory AS edh
      ON d.DepartmentID = edh.DepartmentID
   WHERE e.BusinessEntityID = edh.BusinessEntityID
   AND d.Name LIKE 'P%')
ORDER BY LastName, FirstName
GO


Мне как человеку мало работавшему с сложными запросами, здесь мало что понятно. Сделал примерно по аналогии.
12 июн 12, 00:39    [12700962]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
ddfgfg
Сделал примерно по аналогии.
Вы хелп откройте и почитайте. Там все проще и с примерами.
12 июн 12, 00:48    [12700995]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
ddfgfg
Member

Откуда:
Сообщений: 72
Написал так
p1:=Edit1.Text;
DataModule1.ADOQuerty.Close;
DataModule1.ADOQuerty.SQL.Clear;
DataModule1.ADOQuerty.SQL.Add('INSERT INTO table1(period, id)');
DataModule1.ADOQuerty.SQL.Add('(SELECT '+quotedstr(p1)+', id FROM table2)');
DataModule1.ADOQuerty.SQL.Add('WHERE NOT EXIST (SELECT * FROM table1 WHERE table1.period = '+quotedstr(p1)+')');


Выдаёт ошибку: неправильный синтаксис около ключевого слова "SELECT"
12 июн 12, 19:26    [12704042]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
ddfgfg
Написал так
p1:=Edit1.Text;
DataModule1.ADOQuerty.Close;
DataModule1.ADOQuerty.SQL.Clear;
DataModule1.ADOQuerty.SQL.Add('INSERT INTO table1(period, id)');
DataModule1.ADOQuerty.SQL.Add('(SELECT '+quotedstr(p1)+', id FROM table2)');
DataModule1.ADOQuerty.SQL.Add('WHERE NOT EXIST (SELECT * FROM table1 WHERE table1.period = '+quotedstr(p1)+')');


Выдаёт ошибку: неправильный синтаксис около ключевого слова "SELECT"


А вы уберите крайние круглые скобки скобки в строке:
DataModule1.ADOQuerty.SQL.Add('SELECT '+quotedstr(p1)+', id FROM table2');
12 июн 12, 19:28    [12704049]     Ответить | Цитировать Сообщить модератору
 Re: Условие в запросе  [new]
ddfgfg
Member

Откуда:
Сообщений: 72
Извиняюсь EXISTS, а не EXIST. Всё работает.
12 июн 12, 19:34    [12704075]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить