Вверх ↑
Этот топик читают: Гость
Ответов: 322
Рейтинг: 8
#1: 2020-01-31 08:36:33 ЛС | профиль | цитата
Помогите создать запрос к базе данных (найти ячейки в базе с определёнными данными, а потом заменить все найденные на другие данные)
Можно ли это сделать одним запросом?

Редактировалось 1 раз(а), последний 2020-01-31 08:37:10
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1328
Рейтинг: 69
#2: 2020-01-31 12:35:24 ЛС | профиль | цитата
можно
карма: 2

0
Ответов: 16884
Рейтинг: 1239
#3: 2020-01-31 23:12:11 ЛС | профиль | цитата
Dad2016 писал(а):
Помогите создать запрос к базе данных (найти ячейки в базе с определёнными данными, а потом заменить все найденные на другие данные)
Конкретнее можно ?
UPDATE <имя таблицы> SET <название колонки> = <новое значение> WHERE <название колонки>=<старое значение>;

Редактировалось 2 раз(а), последний 2020-01-31 23:25:58
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8887
Рейтинг: 823
#4: 2020-01-31 23:31:05 ЛС | профиль | цитата
Tad, скорее всего нужен поиск и замена по нескольким параметрам, например: "ФИО" ученика, "Предмет", "ОЦЕНКА"
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#5: 2020-02-01 10:17:13 ЛС | профиль | цитата
Леонид писал(а):
скорее всего
Именно "скорее всего".
Поэтому
Tad писал(а):
Конкретнее можно ?


Редактировалось 1 раз(а), последний 2020-02-01 10:17:38
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 322
Рейтинг: 8
#6: 2020-02-03 09:32:41 ЛС | профиль | цитата
Tad писал(а):
Конкретнее можно ?

База:
1.jpg
2.jpg
Строки которые нужно найти в базе:
3.jpg
И потом заменить (ну допустим если сделал ошибку в слове)
Дело в том, что паралельно этой базы будет вестись ещё одна (или несколько) формирующихся на основе этой. Если делать исправление в этой базе, буду делать запросы на замену(исправление) данных и в других базах.
Заранее спасибо.
карма: 0

0
Ответов: 1925
Рейтинг: 172
#7: 2020-02-03 20:10:05 ЛС | профиль | цитата
Я в таких случаях вывожу первой колонкой id записи и потом делаю так:
UPDATE tblname SET object='%1', chiper='%2' WHERE id=%3
Где вместо %1, %2, %3 - данные с верхних точек компонента FormatStr. Главное при добавлении текста в БД не забывать экранировать его, иначе не дай бог попадётся неэкранированный символ ' в самом тексте - будет ошибка.
карма: 9
0
Ответов: 16884
Рейтинг: 1239
#8: 2020-02-03 21:46:19 ЛС | профиль | цитата
3042,
Dad2016 писал(а):
Дело в том, что паралельно этой базы будет вестись ещё одна (или несколько) формирующихся на основе этой. Если делать исправление в этой базе, буду делать запросы на замену(исправление) данных и в других базах.

Dad2016,спрашивает: Каким запросом "Если делать исправление в этой базе, буду делать запросы на замену(исправление) данных и в других базах."
У меня пока такое решение:
После исправления основной

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;
-- 1.Переименовуем таблицу "паралельной"
ALTER TABLE table1 RENAME TO _table1_old;

-- 2.Создаём новую таблицу
CREATE TABLE table1 (
( column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);

-- Копируем данные из "правленной" таблицы в созданную новую
INSERT INTO table1 (column1, column2, ... column_n)
SELECT column1, column2, ... column_n
FROM _table1_"правленой";

-- удаляем старую
DROP TABLE _table1_old;

COMMIT;

PRAGMA foreign_keys=on;

Редактировалось 3 раз(а), последний 2020-02-03 22:01:55
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 322
Рейтинг: 8
#9: 2020-02-04 06:17:02 ЛС | профиль | цитата
Всем привет, ещё раз объясню вопрос.
В столбце №2 неправильно указан город "Масква", запросом нужно найти все строки с этим городом и исправить на "Москва".
Базу схематично исполнил в ехcel.
1.jpg
Видимо ранее неправильно объяснил, извиняюсь.

Редактировалось 1 раз(а), последний 2020-02-04 06:18:19
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#10: 2020-02-04 07:58:58 ЛС | профиль | цитата
UPDATE <имя таблицы> SET city = "Москва" WHERE city = "Масква";
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Dad2016
Ответов: 322
Рейтинг: 8
#11: 2020-02-04 08:24:27 ЛС | профиль | цитата
Tad
Спасибо огромное.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#12: 2020-02-04 14:49:55 ЛС | профиль | цитата
По-хорошему должна быть одна таблица городов.
-- Создать список городов
CREATE TABLE IF NOT exists city_list (
city_id INTEGER PRIMARY KEY,
city_name TEXT NOT NULL,
city_code TEXT NOT NULL);

-- Заполнить
INSERT INTO city_list(city_name,city_code) values ("Москва","495");
INSERT INTO city_list(city_name,city_code) values ("Сочи","8622");
INSERT INTO city_list(city_name,city_code) values ("Иваново","0932");
INSERT INTO city_list(city_name,city_code) values ("Самара","8462");

-- В остальных таблицах не пишешь "Москва", а в колонку "Город" пишешь id города.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 321
Рейтинг: 10
#13: 2020-02-05 20:20:14 ЛС | профиль | цитата
Tad писал(а):
UPDATE <имя таблицы> SET city = "Москва" WHERE city = "Масква";

Tad, подскажите пожалуйста, а если переменная city пустая, то как можно отменить where непосредственно в запросе (mysql) ?!


$city = 'Москва';
"SELECT * from `users` WHERE city=$city";

Т.е, если:
$city = '';
"SELECT * from `users` WHERE city=$city"; // не дает выборку, а нужно в противном случае, выбрать все города
Как я понял, есть функция IFNULL, но она вроде работает именно с данными выборки, а не с запросом. И пустая переменная - это не есть NULL, по идее.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#14: 2020-02-06 17:36:02 ЛС | профиль | цитата
Master4eG, а просто IF не работает ?
$city = 'Москва';
IF($city="","SELECT * from `users`","SELECT * from `users` WHERE city=$city");
-- или (зависит от версии MySQL)
IF $city=""
THEN "SELECT * from `users`"
ELSE "SELECT * from `users` WHERE city=$city";

Редактировалось 1 раз(а), последний 2020-02-06 20:12:39
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Master4eG
Ответов: 321
Рейтинг: 10
#15: 2020-02-06 22:32:07 ЛС | профиль | цитата
Tad, спасибо большое, за примеры возможных реализаций, к сожалению не один не подошел.
Возможно надо было сразу сказать, что это под php, и там видимо тело запроса не поддерживает условия, пришлось условие вынести за пределы запроса.
И скорее всего я вас этим самым запутал, с переменными, в mysql наверное переменная будет не $city, а @city.
Я пробовал перед if делать SET @city = $city и далее пробовать работать с sql переменной, но не вышло..
Потом по вашим примерам пробовал делать if 1 = 1... выдает:

Сообщение ошибки: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (1=1,SELECT * from `_workers`,SELECT * from `_workers` WHERE city=1' at line 1
Безумное кол-во примеров на просторах интернета и везде по разному... почему нет единого стандарта...
Вообщем эта делема не стоит вашего времени, и так работает, просто хотелось именно в запросе попробовать поработать с условием(для опыта).



Tad писал(а):
По-хорошему должна быть одна таблица городов.
-- Создать список городов
CREATE TABLE IF NOT exists city_list (
city_id INTEGER PRIMARY KEY,
city_name TEXT NOT NULL,
city_code TEXT NOT NULL);

-- Заполнить
INSERT INTO city_list(city_name,city_code) values ("Москва","495");
INSERT INTO city_list(city_name,city_code) values ("Сочи","8622");
INSERT INTO city_list(city_name,city_code) values ("Иваново","0932");
INSERT INTO city_list(city_name,city_code) values ("Самара","8462");

-- В остальных таблицах не пишешь "Москва", а в колонку "Город" пишешь id города.


Пока вы тут обсуждаете правильное хранение данных в таблицах, подскажите как правильно потом забирать эти данные ?!

Как выбрать всех например из таблицы users, где город - москва, ведь в users будет не город, а по-правильному city_id.
Знаю, что join или union нужен, не помню точно, но сложная тема для меня, хотелось бы увидеть пример от вас, если не затруднит.
Пока писал сообщение, подумал о insert, ведь это city_id как-то вставить туда сначала нужно...
Как добавить в users Ивана из Москвы, имея city_list с городами.

Редактировалось 2 раз(а), последний 2020-02-06 22:37:08
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)