Мне нужна помощь с инструкцией MYSQL с использованием PHP.
У меня есть следующие таблицы:
Table: app_main
Columns: id, eid
Table: app_equipment
Columns: id, name
Table: app_locations
Columns: id, name
Если значение, хранящееся в "eid" app_main, начинает таблицу, начинающуюся с префикса "e_", я хочу, чтобы идентификатор и имя были вытащены из таблицы app_equipment. Если значение хранится в "eid" таблицы app_main и начинается с префикса "l_", я хочу, чтобы идентификатор и имя были вытащены из таблицы app_locations. Я пытаюсь понять, как написать одно выражение mysql в php для этого.
Таким образом, результаты будут: Оборудование 1 Местоположение 2 Расположение 3
Один из подходов будет использовать два SELECT и объединить результаты с оператором set UNION ALL.
Спецификация не совсем ясна (пример данных и ожидаемый результат будут иметь большое значение для иллюстрации требований.)
Но мы могли бы сделать что-то вроде этого:
SELECT ee.id
, ee.name
FROM app_main em
JOIN app_equipment ee
ON ee.id = em.id
WHERE em.e_id LIKE 'e\_%' ESCAPE '\\'
UNION ALL
SELECT ll.id
, ll.name
FROM app_main lm
JOIN app_location ll
ON ll.id = lm.id
WHERE lm.e_id LIKE 'l\_%' ESCAPE '\\'
Это не лучший подход. Существуют и другие альтернативы для возвращения эквивалентных результатов; но без более определенной спецификации, мы просто догадываемся о том, что должно быть возвращено.
Обратите внимание, что для оператора UNION [ALL]
требуется, чтобы каждый из SELECT возвращал одинаковое количество столбцов, а столбцы имеют одинаковые типы данных. Если определения столбцов id
и name
в таблице app_equipment отличаются от таблицы app_location, нам может потребоваться настроить запрос, чтобы он работал.
id LIKE
наe_id LIKE