2017-01-06 84 views
0

我有2个表,各个列和tokenid对于两者都是相同的。 第二个表有多个具有相同tokenid的行,其他列是不同的。从2个表中选择列作为具有相同ID的列作为列

现在,我需要从这两个表中的列表中选择标记id相同的列,并且在第二个表中,具有相同tokenid的行必须转换为列。

表1:

tokenid acolumn1 acolumn2 acolumn4 
    1  fname1  mname1  lname1 
    2  fname2  mname2  lname2 

表2:

id tokenid bquestion banswer 
1  1  questiona answera 
2  1  questionb answerb 
3  2  questiona answera 
4  2  questionb answerb 
5  3  questionc answerc 

结果应该是

tokenid acolumn1 acolumn2 acolumn3 bquestion1 banswer1 bquestion2 banswer2 bquestion3 banswer3 
    1  fname1  mname1  lname1  questiona answera questionb answerb null   null 
    2  fname2  mname2  lname2  questiona answera questionb answerb questionc answerc 

我试图首先用不同查询第二表,并用它作为一个子查询加入table1。但数据库在表2中有超过200,000行,并且与由acolumn1选择的tokenid匹配将产生约20000行结果。所以我的查询没有完成。有没有优化的方法来解决这个问题?

P.S:我想补充一点,我使用PDO

+2

的可能的复制[MySQL的数据透视表(http://stackoverflow.com/questions/7674786/mysql-pivot-table) – shmosel

+0

还有,你试过这么远吗? –

+0

@ shA.t就像我说过的,尝试使用LEFT JOIN,使用像select colums(从...中选择列)这样的子查询。问题是,我有巨大的数据库和大多数查询未能成功加载 – Vijai

回答

-2

试试这个代码这个加入您的Table 1和表2中的所有列做用PHP查询。

Click here to see output

SELECT table1.tokenid, table1.acol1, table1.acol2, table1.acol3, table2.bquestion, table2.banswer FROM table1 
    INNER JOIN table2 
    ON table1.tokenid=table2.tokenid 
相关问题