У меня есть sql-запрос, подобный этому
SELECT * FROM phlegm WHERE JOIN mucus ON phlegm.id = mucus.id JOIN snot ON phlegm.id = snot.id
Проблема состоит в том, что эти таблицы содержат несколько столбцов с одинаковыми именами.
Например, все 3 таблицы содержат столбец с именем test
Если я получаю результат запроса в PHP, тогда я получаю только одно значение с именем test ($query->get_result()->fetch_object()->test;
), потому что остальные два будут перезаписаны.
Есть ли способ редактировать этот запрос, чтобы он добавлял префикс ко всем столбцам из таблицы? Например, проверка столбца из таблицы mucus будет указана в запросе, так как mucus_test и тест столбца из мокроты будут phlegm_test.
Один из способов
SELECT phlegm.test as phlegm_test, mucus.test as mucus_test FROM phlegm...
Но у меня много столбцов и таблиц, и это сделало бы запрос длиннее Великой Китайской стены, если бы я должен был назвать каждое поле по одному.
Итак, есть ли способ добавить префикс en masse?
Используемый псевдоним для извлечения всех значений, связанных со всеми тремя таблицами. если вы хотите ссылаться только на конкретный столбец, используйте имя alias_name.column_name
вместо p.*
, где *
означает все столбцы, принадлежащие таблице, с которой связан псевдоним (т.е. p относится к мокроте).
SELECT p.*, m.*, s.*
FROM phlegm p
JOIN mucus m ON p.id = m.id
JOIN snot s ON p.id = s.id;
Я удалил WHERE
из вашего первоначального запроса выше, не уверен, почему он был там.
SELECT *, phlegm.test as phlegm_test, mucus.test as mucus_test FROM phlegm...
Phlegm
иMucus
не очень приятные имена таблиц. В любом случае вы пробовали внутреннее соединение на всех столах?