Поиск по всем столбцам MySQL

djdiplomat
На сайте с 05.08.2009
Offline
136
2357

Пробовал так. Не катит.

$sql = "SELECT * FROM $acf_prefs_table_2 WHERE * '%$monitoring_find_date%'"

Что вместо звездочки поставить, чтобы поиск был глобально по всем столбцам? Имена столбцов и их количество заранее не известны. Известно только строка, которую ищем и имя таблицы (лежит в переменной $acf_prefs_table_2)

kxk
На сайте с 30.01.2005
Offline
990
kxk
#1

djdiplomat, Кто мешает зайти в PMA выполнить то что нужно и записать текст запроса?

Ваш DEVOPS
PN
На сайте с 22.08.2012
Offline
103
#2
djdiplomat:
Пробовал так. Не катит.

$sql = "SELECT * FROM $acf_prefs_table_2 WHERE * '%$monitoring_find_date%'"

Что вместо звездочки поставить, чтобы поиск был глобально по всем столбцам? Имена столбцов и их количество заранее не известны. Известно только строка, которую ищем и имя таблицы (лежит в переменной $acf_prefs_table_2)

select * from INFORMATION_SCHEMA.columns where TABLE_NAME=$acf_prefs_table_2

или так SHOW COLUMNS FROM $acf_prefs_table_2

получили столбцы.

теперь ищем по всем столбцам с помощью OR.

Одной конструкцией по всем столбцам искать нельзя, либо пишите процедуру на SQL.

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
A
На сайте с 19.07.2010
Offline
130
#3
proksey-net:
теперь ищем по всем столбцам с помощью OR.
Одной конструкцией по всем столбцам искать нельзя, либо пишите процедуру на SQL.

Можно CONCAT-ом выкрутиться, только нужно явно перечислить столбцы


SELECT * FROM table1
where concat(field1, field2, field3) like '%what%'
.............
PN
На сайте с 22.08.2012
Offline
103
#4

Почти нашел решение:

SELECT CONCAT(

'SELECT * FROM `', c.table_schema, '`.`', c.table_name, '`'
' WHERE ', GROUP_CONCAT(
CONCAT('`', c.column_name, '`')
SEPARATOR ' LIKE "%what%" OR '
), ' LIKE "%what%"',
' LIMIT 1'
) query
FROM information_schema.columns c
WHERE c.table_schema = 'ИМЯ_БАЗЫ_ДАННЫХ' AND c.table_name='ИМЯ_ТАБЛИЦЫ'
GROUP BY c.table_name

этот запрос выводит запрос, остается его запустить☝

A
На сайте с 19.07.2010
Offline
130
#5

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий