Ответ 1
Чтобы избежать двусмысленности в столбцах с несколькими таблицами, вы должны вручную указать каждое имя столбца, которое существует с тем же именем в нескольких таблицах.
http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html
Я хотел бы сделать что-то вроде этого:
SELECT table.id AS prefix_id, table.name AS prefix_name
... и добавьте префикс динамически для всех имен полей, а не для их выбора вручную (т.е. SELECT table.* AS prefix_*
или что-то еще)
Надеюсь, я точно это описал. Любые мысли?
Edit
Чтобы быть ясным, причина, по которой я прошу, состоит в том, чтобы убедиться, что мой результат запроса содержит каждый столбец из каждой таблицы, которую я вызываю, даже если есть повторяющиеся имена полей. Например, у меня может быть таблица с большим количеством полей, что означает, что я не хочу, чтобы псевдоним всех полей вручную. Далее, если 3 таблицы имеют поле под названием name
, мой результат не будет содержать три результата name
; у него будет один. Я хочу избежать двусмысленности с именами столбцов.
Чтобы избежать двусмысленности в столбцах с несколькими таблицами, вы должны вручную указать каждое имя столбца, которое существует с тем же именем в нескольких таблицах.
http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html
Когда вы ссылаетесь на результаты, вы можете ссылаться на каждый столбец по имени tablename.column. Поэтому у вас есть префикс по умолчанию, который добавляется к каждому имени столбца.
SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name;
Я могу представить ситуацию, когда это может быть полезно, если у вас есть несколько моделей данных в списке, который нужно заполнить из одного SQL-запроса.
Должно быть возможно использовать DESCRIBE или SHOW COLUMNS в этих таблицах перед запросом SELECT. Таким образом, вы знаете все имена полей для каждой таблицы. Это не помогает с любыми потенциальными конфликтами имени поля.
Я не буду комментировать, если это хорошая идея или нет. Каждый разработчик должен решить, где провести линию между гибкостью, лень и хорошей практикой.
В mysqli вы можете использовать функцию php
mysqli_fetch_fields()
для fieldinformations - так что вы получите имя_таблицы каждой колонки