Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать все поля, названия которых соответствуют шаблону / 15 сообщений из 15, страница 1 из 1
14.01.2015, 08:53:06
    #38853775
ShutTap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
Здравствуйте.
В таблицах есть поля со схожими названиями, отличающиеся только номером.
Например: field_1, field_2, field_3 ... field_N
Количество может быть разным.
Помогите пожалуйста составить запрос, чтобы выбирались все поля, названия которых состоят только из "field_" и числа далее
...
Рейтинг: 0 / 0
14.01.2015, 09:14:33
    #38853788
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
create procedure + prepared statement
...
Рейтинг: 0 / 0
14.01.2015, 09:54:44
    #38853819
ShutTap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
можно на примере или поподробнее порядок действий?
...
Рейтинг: 0 / 0
14.01.2015, 10:44:12
    #38853869
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
ShutTap,

11309686
...
Рейтинг: 0 / 0
14.01.2015, 11:13:14
    #38853891
ShutTap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
Ух ё-моё... С моим уровнем знаний такое не осилить, сразу как минимум...
На русском не подскажите ресурсы, чтоб понять, что происходит и зачем в строках? Идеально - пример с русскими комментариями...
...
Рейтинг: 0 / 0
14.01.2015, 11:41:05
    #38853924
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE DEFINER = 'root'@'localhost'
PROCEDURE baza.procedure1()
BEGIN
DECLARE s VARCHAR(255);
-- выбираем все нужные столбцы в переменную %s
SELECT group_concat(`COLUMN_NAME` order by `COLUMN_NAME`delimiter ',') into @s
FROM information_schema.`COLUMNS`
WHERE TABLE_SCHEMA = 'база'
 AND TABLE_NAME = 'таблица'
 AND `COLUMN_NAME` like 'field_%';
-- собираем запрос (в ту же переменную)
SET @s := concat('select ',@s,' from таблица';
-- и выполняем его
PREPARE stmt FROM @s; 
EXECUTE clr;
DEALLOCATE PREPARE clr;
END
...
Рейтинг: 0 / 0
14.01.2015, 12:27:46
    #38853978
ShutTap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
Спасибо большое за пример, вроде так в целом с помощью гугла понятно
пишется эта конструкция как обычный запрос?
не совсем понимаю, зачем тогда указывать саму базу данных, если как бы уже с ней работаем, и для чего нужно CREATE DEFINER = 'root'@'localhost' ?
еще на счет названия столбца, `COLUMN_NAME` like 'field_%' , можно ли как-то указать, что в правой части должно быть только число? так как могут быть столбцы с текстом, вроде field_option, к примеру
...
Рейтинг: 0 / 0
14.01.2015, 12:42:39
    #38854009
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
ShutTap,

может лучше базу переделать на нормальный лад???

вот зачем в базе поля name_1 name_2 name_3 ??

если можно вынести в отдельную таблицу и привязать её?

что значит все поля по типу name_# номер, ты не знаешь изначально сколько таких полей и эти самые номера...типо столбики добавляются и удаляются юзерами?

это не ты два месяца назад описывал проблему с системой, где юзеры могут добавить и удалить столбик в базе, и тебе советывали либо сразу переделать базу, либо выучить препеа стейтмент!?
...
Рейтинг: 0 / 0
14.01.2015, 12:47:23
    #38854018
ShutTap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
не, вроде не я, с такой проблемой только ща столкнулся. да юзеры могут добавить и удалить. это в готовой cms, по-этому бд переделать нереально
...
Рейтинг: 0 / 0
14.01.2015, 12:50:12
    #38854023
ShutTap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
а может и я, уже не помню... была похожая проблема, но там решил формированием запроса на php, т.к. можно было взять количество.
...
Рейтинг: 0 / 0
14.01.2015, 13:39:17
    #38854125
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
ShutTapпишется эта конструкция как обычный запрос?Да. Не забывайте про delimiter.
ShutTapне совсем понимаю, зачем тогда указывать саму базу данных, если как бы уже с ней работаемэто необязательно
ShutTapи для чего нужно CREATE DEFINER = 'root'@'localhost' ?ну почитайте уже ман по create procedure...
ShutTapеще на счет названия столбца, `COLUMN_NAME` like 'field_%' , можно ли как-то указать, что в правой части должно быть только число?ну возьмите вместо лайка регэксп
...
Рейтинг: 0 / 0
14.01.2015, 13:42:38
    #38854139
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
tanglirShutTapне совсем понимаю, зачем тогда указывать саму базу данных, если как бы уже с ней работаемэто необязательноОбязательно, если в другой схеме может случиться таблица с таким же именем.
...
Рейтинг: 0 / 0
14.01.2015, 16:58:37
    #38854475
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
miksoft,

даже если мы явно работаем (use %dbname%) в определённой схеме?
...
Рейтинг: 0 / 0
14.01.2015, 17:02:44
    #38854480
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
tanglirmiksoft,

даже если мы явно работаем (use %dbname%) в определённой схеме?Да.
http://dev.mysql.com/doc/refman/5.5/en/columns-table.html
См. последний коммент от August 22 2010 11:41am
Да и самостоятельно проверить несложно.
...
Рейтинг: 0 / 0
14.01.2015, 17:53:55
    #38854526
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать все поля, названия которых соответствуют шаблону
miksoft, только теперь дошло - то, о чём на самом деле спрашивал ТС, для меня было настолько очевидно, что я не понял ни его вопроса, ни вашего ответа :)
я-то думал, вопрос про baza .procedure1()
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать все поля, названия которых соответствуют шаблону / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]