Как я могу приписать несколько операторов CASE одному ALIAS?
Предполагая, что у меня есть следующие таблицы. Каждый столбец 'id' - это bigint, а все остальные поля - varchar (255). 'some_word' - это имя продукта, которое недавно было переименовано в другое имя, и мне нужно сгенерировать отчет, чтобы все вхождения 'some_word' использовались нашими менеджерами контента для замены старого имени новым именем.
tbl_course c
------------------------------------------------------
| id | fullname | shortname | summary |
------------------------------------------------------
| 1 | some_word | AB | apples and bananas |
| 788 | Jays Course | JC | xyz some_word |
------------------------------------------------------
tbl_assign a
--------------------------------------------
| id | name | intro |
--------------------------------------------
| 1 | some_word No. 5 | Hello, some_word! |
| 9 | cats | Not Dogs |
--------------------------------------------
tbl_data_content dc
---------------------------------
| id | description | modulename |
---------------------------------
| 51 | my data | some_word |
| 70 | some_word | carrots |
---------------------------------
Мне необходимо создать один оператор SELECT, который возвращает все значения 'some_word' по всей базе данных следующим образом:
--------------------------------------------
| id | Entity Name | Entity Type |
--------------------------------------------
| 1 | some_word | tbl_course |
| 788 | Jays Course | tbl_course |
| 1 | some_word No. 5 | tbl_assign |
| 51 | my data | tbl_data_content |
| 70 | some_word | tbl_data_content |
--------------------------------------------
Псевдоним «Имя сущности» должен содержать c.fullname, a.name и dc.modulename («имя» модуля, который нужно отредактировать).
Псевдоним «Тип сущности» должен содержать имя таблицы (tbl_course, tbl_assign и tbl_data_content).
Псевдоним 'Id' должен содержать c.id, a.id и dc.id.
Я предполагаю, что лучший метод - это использовать три ALIASES ('id', 'Entity Name' и 'Entity Type'), каждый из которых содержит несколько операторов CASE, которые ограничивают возвращаемые данные значением 'LIKE'% some_word% '. Однако мои попытки приписать несколько операторов CASE одному ALIAS потерпели неудачу.
Как я могу это сделать? Я буду запускать это на нескольких экземплярах этого приложения, которое нам нужно изменить, и каждый из этих экземпляров находится в базах данных MySQL, MariaDB или PostgreSQL, поэтому я хотел бы создать отчет, который можно легко импортировать и запускать в каждом экземпляре. ,
Ваша помощь очень ценится :)
Я пытался вложить операторы CASE друг в друга. Однако это предполагает, что любые значения в первом (верхнем) CASE возвращают TRUE, что может быть не так. Э.Г.
SELECT
CASE WHEN c.fullname LIKE '%some_word%'
THEN c.fullname
CASE WHEN c.shortname LIKE '%some_word%'
THEN c.fullname
END
END AS 'Entity Name'
--repeat for each table
FROM tbl_course c, tbl_assign a, tbl_data_content dc