SQL: Как добавить префикс к именам столбцов в JOIN?

0

У меня есть 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?

  • 2
    Почему бы просто не использовать более короткие псевдонимы, такие как «SELECT * from phlegm p ON p.id ...»?
  • 1
    Phlegm и Mucus не очень приятные имена таблиц. В любом случае вы пробовали внутреннее соединение на всех столах?
Показать ещё 1 комментарий
Теги:

2 ответа

0
Лучший ответ

Используемый псевдоним для извлечения всех значений, связанных со всеми тремя таблицами. если вы хотите ссылаться только на конкретный столбец, используйте имя 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 из вашего первоначального запроса выше, не уверен, почему он был там.

0
SELECT *, phlegm.test as phlegm_test, mucus.test as mucus_test FROM phlegm...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню