2014-10-27 4 views
1

Хорошо, поэтому у меня есть две таблицы, таблица news и таблица users. Они устанавливаются, как показано ниже:MySQL INNER JOIN с разными именами столбцов

новости:

id title user_id contents 

пользователей:

id username password 

Когда я запускаю этот запрос:

SELECT news.title, users.username, news.contents FROM news INNER JOIN users ON news.user_id=users.id WHERE news.id=:id 

я могу получить доступ только идентификатор пользователя, используя $query['id']. Таким образом, похоже, что соединение использует имена столбцов из таблицы2, хотя я хочу, чтобы они сопоставляли его с именами столбцов таблицы1. Поэтому, даже если столбец называется id в таблице users, я хочу получить к нему доступ в пределах user_id, так как я указал, что в запросе JOIN.

мне это нужно, потому что если я когда-нибудь понадобится id от table1, они оба будут отображаться в колонке под названием id, и я бы только быть в состоянии получить id таблицы пользователей.

Итак, есть ли способ сделать это? Доступ к столбцу из таблицы2 под именем столбца в таблице1?

+0

'ВЫБРАТЬ table2.whatever AS name_you_want'? –

+0

@Marc B Итак, это означало бы, что я должен использовать это, правильно: 'SELECT news.title, users.id AS user_id, users.username, news.contents FROM news INNER JOIN users ON news.user_id = users.id WHERE news.id =: id' – Qub1

ответ

1

В MySQL то, что вы указываете в инструкции select, является тем, что оно вызывается в результирующем наборе, поэтому вам нужно сказать ему, что вам дать. Вы делаете это с AS command

SELECT users.id AS user_id ... FROM ... 

Таким образом, вы можете назвать это все, что вы хотите

или захватить user_id от новостей с

SELECT news.user_id ... FROM ... 
0
SELECT users.id AS id1, news.id AS id2, news.title, users.username, news.contents 
FROM news INNER JOIN users ON news.user_id=users.id WHERE news.id=:id 

echo $query['id1'] . $query['id2'];