SQL внутреннее объединение двух таблиц с одинаковыми именами столбцов - PullRequest
14 голосов
/ 29 июля 2010

У меня есть две таблицы с переменным количеством столбцов. (Я не знаю, сколько столбцов или какие там имена будут), например, Таблица A и Таблица B.

Таблица A:

ID | B_ID | {variable} 

TableB

ID | {variable} 

Запрос:

SELECT TableA.*, TableB.* FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;

Когда TableA и TableB оба имеют столбец с одинаковым именем, я не могу различить два разных столбца. Например, в обеих таблицах есть столбец «Имя», в результате которого будет получен запрос:

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 иметь имя столбца)

Так что мой вопрос

Как вы различаете столбцы между двумя таблицами с помощью INNER JOIN, если таблицы могут иметь одинаковые имена столбцов?

Я использую SQLite3.

Ответы [ 2 ]

13 голосов
/ 29 июля 2010

Ваш набор результатов (с учетом вашего запроса) должен иметь все столбцы TableA, за которыми следуют все столбцы TableB, поэтому, когда вы переходите ко второму столбцу ID, вы знаете, что находитесь в данных TableB.

Тем не менее, мне показалось бы странным, что вы запрашиваете все данные из двух таблиц, о которых вы функционально ничего не знаете ...

8 голосов
/ 29 июля 2010

Это, по общему признанию, решение для взлома, но это:

SELECT TableA.*, "#", TableB.* 
FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;

Создает список результатов, который будет разделен на два блока, слева и справа от столбца #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...