Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2015, 14:54   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию Найти и изменить SQL запрос

Есть таблица users со столбцами id user pass email sms(integer)
Как мне сделать поиск по id и если нашелся то изменить значение email только у этого пользователя
И в столбце sms храниться количество смс, как передать допустим 10 из 20 другому пользователю.То есть у одного отняли другому прибавили

Последний раз редактировалось mitiay; 31.10.2015 в 15:38.
mitiay вне форума Ответить с цитированием
Старый 31.10.2015, 16:46   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Как мне сделать поиск по id
Код:
SELECT * FROM Tab WHERE id = xx
Цитата:
и если нашелся то изменить значение email только у этого пользователя
Код:
UPDATE Tab SET email ='xxxx@mail.ru' WHERE id =xx
Цитата:
И в столбце sms храниться количество смс,
Нет, там "users- пользователь" должен главное и у этого users должен ещё дочерние таблица где будим хранить СМС и связь между ними должен один ко многим
-- id
-- Дата_отправки
-- СМС_текст
-- FK constraint Users(id)
Цитата:
как передать допустим 10 из 20 другому пользователю.То есть у одного отняли другому прибавили
Что передать ? нечего не понял

Последний раз редактировалось xxbesoxx; 31.10.2015 в 16:53.
xxbesoxx вне форума Ответить с цитированием
Старый 31.10.2015, 17:45   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как передать допустим 10 из 20 другому пользователю.То есть у одного отняли другому прибавили
Двумя запросами:
Код:
UPDATE Tab SET sms=sms-20 WHERE id = 'Пятроффово ID'
UPDATE Tab SET sms=sms+10 WHERE id = 'Иваноффово ID'
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2015, 20:04   #4
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Код:
begin
SQLQueryPersonal.sql.text:='update users set Email='+ 'newmail@mail.ru'+ 'where IdUser='+edit1.text; 
SQLQueryPersonal.ExecSQL;

База MYSQL
Делаю вот так выходит ошибка
Изображения
Тип файла: png err.png (20.4 Кб, 42 просмотров)

Последний раз редактировалось mitiay; 31.10.2015 в 20:32.
mitiay вне форума Ответить с цитированием
Старый 31.10.2015, 20:54   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
'where IdUser='
А чего пробела в начале нет?
Цитата:
set Email='+ 'newmail@mail.ru'
А чего емеля не в ковычках?
Как запросы параметризировать, знаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2015, 21:00   #6
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

SQLQueryPersonal.sql.text:=('UPDATE Users SET Email =')+('new_email_goes_here@yahoo.com ')+(' WHERE IdUser = 5');
так тоже самое
mitiay вне форума Ответить с цитированием
Старый 31.10.2015, 21:02   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Делаю вот так выходит ошибка
Вот здесь не хватает апостроф set Email='+ ''newmail@mail.ru'' так должен работать
Код:
SQLQueryPersonal.sql.text:='update users set Email= ''newmail@mail.ru'' where IdUser='+ Trim(edit1.text); 
SQLQueryPersonal.ExecSQL;

Последний раз редактировалось xxbesoxx; 31.10.2015 в 21:04.
xxbesoxx вне форума Ответить с цитированием
Старый 31.10.2015, 21:04   #8
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

[dcc32 Error] Unit4.pas(82): E2038 Illegal character in input file: '"' (#$22)
mitiay вне форума Ответить с цитированием
Старый 31.10.2015, 21:17   #9
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Поставил пробел перед WHERE
SQLQueryPersonal.sql.text:='update users set Email='+('newmail@mail.ru')+' where IdUser='+ Trim(edit1.text);
Изображения
Тип файла: png err1.png (15.9 Кб, 39 просмотров)
mitiay вне форума Ответить с цитированием
Старый 31.10.2015, 21:25   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

O-la-la...
1)
Код:
 with SQLQueryPersonal do begin
  sql.text:='update users set Email='+QuotedStr('newmail@mail.ru')+' where IdUser='+edit1.text; 
  if ExecSQL=0 then ShowMessage('Такого Узыря немае');
 end;
2)
Код:
With SQLQueryPersonal do begin
 sql.text:='update users set Email=:mail where IdUser=:user'; 
 with Parameters do begin 
   ParamByName('mail').Value:='newmail@mail.ru';
   ParamByName('user').Value:=edit1.text;
 end;
 if ExecSQL=0 then ShowMessage('Такого Узыря немае');
end;
Сам, надеюсь, выбрать из двух вариантов сможешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос sql. Найти людей, которые чаще всего переходят с одного тарифа на другой. GoodNight SQL, базы данных 3 28.05.2014 13:40
Delphi-BDE-LocalSQL - SQL запрос-найти конкретный номер AvRob SQL, базы данных 3 14.06.2013 11:41
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15