2012-05-22 43 views
0

我的select语句遇到问题,运行时title_two和author_two未被下一个标题值正确填充。相反,他们打印出与b.title和b.author相同的内容。我试着声明为mysql选择别名不起作用

`B.title AS title_two`. 

    SELECT R.bookone, B.title, B.author, 
    R.booktwo, B.title title_two, B.author author_two, 
    R.relation, R.relationlike, R.relationdislike 
    FROM relationships R 
    INNER JOIN books B ON R.bookone = B.bookid; 

有两个表

关系,其有如下 - relationshipid,bookone,booktwo,关系,relationlike,relationdislike

然后书籍是BOOKID,标题,作者,出版商

bookone和booktwo是引用bookid的外键什么即时通讯尝试达到目的就是让用户点击一个链接它会拿出书与其他书籍的每一个关系

+0

“B.title AS title_two”会显示什么内容。 ? –

+0

-1你的问题很混乱,可以从不同类型的答案中看出。 –

+0

有两个表的关系,其有如下 - relationshipid,bookone,booktwo,关系,relationlike,relationdislike 然后书籍是BOOKID,标题,作者,出版商 bookone和booktwo外键引用BOOKID 想什么IM要达到这样的效果,当用户点击一个链接时,它会拿出书与其他书的每一种关系,而不是它刚刚提出两次bookone的标题 – user1393064

回答

0

使用引号,而使用别名

SELECT R.bookone, B.title, B.author, 
    R.booktwo, B.title as 'title_two', B.author as 'author_two', 
    R.relation, R.relationlike, R.relationdislike 
    FROM relationships R 
    INNER JOIN books B ON R.bookone = B.bookid; 
0

的正确格式为:ColNameNewColName

SELECT R.bookone as `BookOne` 
    , ... 
FROM relationships R 
INNER JOIN books B ON R.bookone = B.bookid; 

或者干脆(不包括AS)

SELECT R.bookone `BookOne` 
    , ... 
FROM relationships R 
INNER JOIN books B ON R.bookone = B.bookid; 
0

你需要加入的书籍再来一次。例如:

SELECT R.bookone, B1.title, B1.author, 
    R.booktwo, B2.title title_two, B2.author author_two, 
    R.relation, R.relationlike, R.relationdislike 
    FROM relationships R 
    INNER JOIN books B1 ON R.bookone = B1.bookid 
    INNER JOIN books B2 ON R.booktwo = B2.bookid 
+0

当你做出改变时,你建议网站抛出这个 未知列'R.bookone'in'条款' – user1393064

0

他们正在做他们应该做的事情。 author_two应该与B.author相同,title_two应该和B.title相同。他们只是别名。

此外,从单个表中请求相同的列两次将不会获得表中的下一个结果 - 它只是返回两次相同的列。

+0

有什么方法可以让我做什么即时尝试达到? 或者我应该把它当做两条select语句再合并它们 – user1393064

+0

是的,Emil有答案。 – Jhong

+0

做出更改时,他建议网站在'条款 任何想法抛出未知列'R.bookone'? – user1393064