У меня есть две таблицы с переменным количеством столбцов. (Я не знаю, сколько столбцов или что там имена будут), например, таблицы A и B. ТаблицаSQL внутреннее соединение двух таблиц с одинаковыми именами столбцов
TableA:
ID | B_ID | {variable}
TableB
ID | {variable}
Запрос:
SELECT TableA.*, TableB.* FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;
Когда TableA и TableB имеют столбец с таким же именем, я не могу различать два разных столбца. К примеру оба таблиц имеет столбец «Name» этот запрос приведет:
ID | ID | B_ID | NAME | NAME |
1 | 35 | 35 | bob | jim |
Я ищу способ провести различие между двумя таблицами. Предпочтительно с префиксами для названий столбцов, таких как.
TableA_ID | TableB_ID | TableA_B_ID | TableA_NAME | TableB_NAME |
1 | 35 | 35 | bob | jim |
Я знаю, что из «AS» ключевое слово, но проблема в том, что я не знаю, что имена столбцов будут заранее. (Я не знаю, если TableA или TableB собираются иметь столбец Name)
Так что мой вопрос
Как различать столбцы между двумя таблицами с INNER JOIN, когда таблицы могут иметь такие же имена столбцов?
Я использую SQLite3.
Звучит как какой-то фанковый динамический SQL, который может запрашивать таблицы, созданные пользователем во время выполнения пользователем. – FrustratedWithFormsDesigner
Согласитесь, если вы не знаете названия столбцов, в вашем дизайне есть что-то серьезное. Операторы выбора никогда не должны использовать select *, имена столбцов должны быть указаны особенно в объединении, где один и тот же столбец дважды возвращается, это расточительно для ресурсов сервера. – HLGEM
Если таблицы создаются, они имеют имена столбцов, которые могут быть захвачены тогда, хотя ... – AllenG