2014-10-27 88 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'];