Возможно, вы могли бы написать SQL, который записывает SQL:
select REPLACE(
'SELECT ''{colstub}GuideRef'' as which, {colstub}Qty FROM remainder WHERE {colstub}Ref like ''%somevalue%'' UNION ALL',
'{colstub}',
REPLACE(column_name, 'GuideRef', '')
)
FROM information_schema.columns
WHERE table_name = 'remainder' and column_name LIKE '%Ref'
Это работает как «вытянуть все имена столбцов из информационной схемы, где имя столбца похоже на% guideref, замените guideref ничем»чтобы получить только измененный фрагмент имени столбца: NWANTguideref -> NWANT, NWANTpreviousguideref -> NWANTprevious ...
затем использует эту заглушку для формирования запроса, который дает строку, отображающую имя столбца, кол-во из столбца количества, где соответствующий столбец guideref НРАВИТСЯ какое-то значение "
Если вы запустите это, он выдаст результирующий набор, например:
SELECT 'aGuideRef' as which, aQty FROM table WHERE aGuideRef LIKE '%lookingfor%' UNION ALL
SELECT 'bGuideRef' as which, bQty FROM table WHERE bGuideRef LIKE '%lookingfor% ...
Таким образом, он в основном выдает загрузку строк, которые сами по себе являются SQL. Может потребоваться небольшая тонкая настройка, и, надеюсь, все ваши столбцы надежно и жестко похожи на xQty, xGuideRef, xComments
триплеты, но по сути это большинство запросов для вас:
Если вы затем скопируете набор результатов из результатовСетка и вставьте его обратно в окно запроса, удалите последний UNION ALL и запустите его, он будет искать столбцы и сообщит вам, где он был найден, а также количество
Это не слишком удобно для производственной системы, но вы можете сделать то же самое в php-запросе, получить строки в другой команде sql, перезапустить ее ..
Я бы посоветовал вам рассмотреть вопрос об изменении структуры таблицы:
prefix, qty, guideref, comments
У вас не должно быть 86 столбцов, которые в основном совпадают;у вас должен быть один столбец с одним из 86/3 различных значений, тогда вы можете просто запросить guideref и тип. Если бы это была таблица адресов, я говорю, что у вас ** не должно быть * HomeZipcode, WorkZipcode, UniversityZipcode, MomZipcode, DadZipcode ... и каждый раз, когда вы хотите сохранить другой тип адреса, вы добавляете больше столбцов (BoyfriendZipcode, GirlfriendZipcode,Child1Zipcode ...). Вместо этого, если у вас только что был столбец «addresstype», вы можете хранить любое количество различных типов адресов без перекомпиляции приложения и изменения схемы БД.
. Вы можете использовать эту технику, чтобы изменить форму таблицы - напишитеSQL, который записывает связку UNION ALL sqls (без предложений WHERE), один из столбцов должен быть столбцом «recordtype» (из colstub), а остальные столбцы должны быть просто «qty», «guide», «comments». После того, как вы установили свой результат с профсоюзами, вы можете составить таблицу для этих 4 вещей, а затем поставить INSERT INTO newtable
во главе блока профсоюзов