С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Pall92
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
1

"Вырезать" значение поля одним запросом

10.07.2013, 06:25. Просмотров 1386. Ответов 12
Метки нет (Все метки)

Как "вырезать" значение поля одним запросом??
Не могу справится с такой казалось бы простой задачей... сделать это за два запроса - select нужное значение и следующим запросом присвоить этому полю пустое значение - задача простая. но реально ли реализовать это одним запросом?

сколько ни гуглил слово "вырезать" не встречается в этой теме вообще. а как по-другому назвать процедуру одновременного копирования и удаления я даже не знаю.

вообщем буду благодарен любой помощи, заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2013, 06:25
Ответы с готовыми решениями:

Есть таблица, где значение поля "номера строки" делятся без остатка на произвольное число. Запрос такой?
DELETE from TAB1 WHERE ID%n=0 Добавлено через 14 минут Не дописал в...

Primary key "id" и копирование этого самого значение в поле "group_id"
Всем привет. Если в таблицу добавить навую запись, то поле primary key "id"...

Вытащить значение из другой таблицы если совпадают условия одним запросом
Как правильно составить запрос. Есть таблица product, а в ней ячейка cat,...

Дана таблица "Сделка"("Код Товара", "дата", "количество") Удалите все прошлогодние сделки.
помогите решить задания!!! 1.Составьте SQL-запрос на удаление. Дана таблица...

Сделать так, чтобы полученные "PostID" отправлялись запросом в эту же таблицу
Есть такой запрос: SELECT postID FROM `wallComments` WHERE (`authorComment` =...

12
Crast
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
10.07.2013, 08:16 2
Под вырезать ты подразумевал обратить значения поля в NULL?
Ответ по-моему очевиден:
MySQL
1
UPDATE tab SET field=NULL WHERE field=Значение

Не по теме:

Можно даже создать вычисляемое поле в запросе, и установить это поле.

0
Devochka
31 / 19 / 3
Регистрация: 07.10.2011
Сообщений: 98
10.07.2013, 09:34 3
Тоже хочется узнать, что подразумевает автор под вырезанием. И куда копируется вырезанное значение?
0
Pall92
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
10.07.2013, 11:11  [ТС] 4
Под "вырезать" я имел ввиду то, что подразумевается под этим словом например в винде: скопировать( в данном случае вернуть в результат запроса) и удалить(обнулить) источник(ячейку таблицы).

вот. теперь понятнее наверно)

суть в том что написать сначала запрос делающий выборку а затем следующий запрос обнуляющий нужную ячейку я могу. но все идет к тому, что мне потребуется делать это одним запросом, чтобы в дальнейшем не всплывали разные ошибки. но вот как это сделать О.о
0
Crast
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
10.07.2013, 11:36 5
Цитата Сообщение от Pall92 Посмотреть сообщение
вот. теперь понятнее наверно)
А вот и не понятно:
1. Нужно удалить или задать ячейке какое-либо значение;
2. Вырезка и вставка будет происходить в пределах одной таблицы или нет?.
Если в пределах одной таблицы и только обнуление и замена обнуленных значений, это еще хоть как-то реализуемо.
Пример того что хочешь сделать с таблицами, в ином случае помочь не смогу.

Добавлено через 3 минуты
+ типы и предельные значения столбцов
0
Pall92
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
10.07.2013, 13:14  [ТС] 6
Цитата Сообщение от Crast Посмотреть сообщение
А вот и не понятно:
1. Нужно удалить или задать ячейке какое-либо значение;
2. Вырезка и вставка будет происходить в пределах одной таблицы или нет?.
Если в пределах одной таблицы и только обнуление и замена обнуленных значений, это еще хоть как-то реализуемо.
Пример того что хочешь сделать с таблицами, в ином случае помочь не смогу.
1 - задать ячейке значение - либо пустую строку(т.к. тип данных строковый) ну или любое дефолтное значение, не суть важно
2 - все проиходит в одной таблице

говоря более лаконично - запрос должен присвоить ячейке новое значение, а вернуть старое.

пример.. да блин.. как-то вы все усложняете) :
таблица:
A | B
1 | "привет"

в скрипте:
$sql = mysql_query('волшебный запрос'); - возвращает в $sql "привет"

таблица после запроса:
A | B
1 | ""


не знаю как еще объяснить))
0
mechlech
0 / 0 / 1
Регистрация: 02.07.2013
Сообщений: 27
10.07.2013, 13:16 7
Нет, так нельзя
0
Crast
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
10.07.2013, 13:43 8
В транзакцию можно засунуть. Будет
MySQL
1
2
3
4
START TRANSACTION;
select A,B from tab  where  A =1;  #Здесь условие которое тебе нужно
update tab set B="" where  A =1;
COMMIT;
1
Pall92
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
10.07.2013, 13:53  [ТС] 9
Цитата Сообщение от mechlech Посмотреть сообщение
Нет, так нельзя
как-то странно) То что писал Crast вроде бы подходит - в одной таблице, только обнуление( не удаление самой ячейки)... если это "хоть как-то реализуемо" то как?


суть в том, что скрипт должен "вырезать" значение ячейки, отправить его флеш приложению. все бы ничего. но другой скрипт закидывает в эту ячейку новые значения. для алгоритма важно, чтобы флеш приложение забрало себе значение ячейки и очистило его. и после этого туда бы кидались новые значения. но тут такая штука:

нормальная работа:
1-запрос возвращает значение ячейки для отправки его клиенту
2-обнуляет эту ячейку
3-другой скрипт присваивает ячейке новое значение(на самом деле даже не присваивает, а добавляет, складывает строки, но это не принципиально)

если делать процедуру этого самого вырезания в два запроса, то при частых запросах к базе данных возможен такой косяк:

1-запрашиваем значение
3-присваиваем новое значение
2- удаляем как бы старое значение. но из-за косяка удаляются и только что пришедшие.

я думал, что это можно решить объединением в один запрос 1го и 2-го... но если это не возможно, то как решить такую задачу? она ведь должна быть довольно тривиальной....
по-идее)

Добавлено через 4 минуты
Цитата Сообщение от Crast Посмотреть сообщение
В транзакцию можно засунуть. Будет
MySQL
1
2
3
4
START TRANSACTION;
select A,B from tab  where  A =1;  #Здесь условие которое тебе нужно
update tab set B="" where  A =1;
COMMIT;
Спасибо! да, это кажется то что нужно)
0
Crast
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
10.07.2013, 13:53 10
Если совсем не выходит, то в php есть мьютексы.
0
Pall92
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
10.07.2013, 14:08  [ТС] 11
Цитата Сообщение от Crast Посмотреть сообщение
Если совсем не выходит, то в php есть мьютексы.
думаю с транзакцией сработает.. все вроде логично. я просто не знал про этот механизм)

это дело тоже просто строчкой забивать в mysql_query($query) ?
0
lemuriec
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 138
10.07.2013, 17:42 12
Pall92, чувак....ммм можно и в пхп :
PHP
1
2
3
4
$sql = mysql_query('SELECT b from tab where A=1');
$row_sql = mysql_fetch_assoc($sql)
echo $row_sql['B'];
$delete = mysql_query('UPDATE tab SET B=NULL where A=1');
или тебе обязат в одном запросе?
0
Pall92
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
11.07.2013, 12:40  [ТС] 13
Цитата Сообщение от lemuriec Посмотреть сообщение
Pall92, чувак....ммм можно и в пхп :
PHP
1
2
3
4
$sql = mysql_query('SELECT b from tab where A=1');
$row_sql = mysql_fetch_assoc($sql)
echo $row_sql['B'];
$delete = mysql_query('UPDATE tab SET B=NULL where A=1');
или тебе обязат в одном запросе?
вы так прикалываетесь что ли? я каждое сообщение писал - проблем сделать в два запроса нет, но надо было в один запихать. даже в заголовке написано - одним запросом. тем более мне уже помогли
0
11.07.2013, 12:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 12:40

Значение по умолчанию: "0"; "Null"; "нет значения по умолчанию"
Форумчане, прошу Вашего совета! В свойствах поля таблицы MySQL "Значение по...

Приоритеты выдачи: сначала выдавать записи со значением "q", затем "sh", и в конце "s"
Есть небольшая база данных (предположим 10 записей). Есть столбик "Game", он...

Пожалуйста нужно разобраться с запросом Mysql! Одним запросом из двух таблиц / MySQL
У меня на главной странице существует вот такой запрос (он ниже), который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru