2014-10-27 151 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 

我可以只使用訪問用戶ID $query['id']。所以看起來join是使用table2中的列名,儘管我希望它們將它映射到table1的列名。所以即使列表在用戶表中被稱爲id,我想在user_id下訪問它,因爲我在JOIN查詢中指定了該列。

我需要這個,因爲如果我需要從table1的id,他們都將被映射到名爲id的列,我只能夠獲得users表的id

那麼有沒有辦法做到這一點?訪問table1中列的名稱下的列?

+0

的USER_ID這樣,你可以把它叫做'選擇table2.whatever AS name_you_want'? – 2014-10-27 19:02:30

+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 2014-10-27 19:04:41

回答

1

在MySQL中,你在select語句中指定的是它在結果集中被調用的內容,所以你需要告訴它什麼給你。你這樣做,與AS command

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

任何你想要的

或從搶新聞與

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'];