使用JOINS连接来自多个表MySQL的用户数据

时间:2014-01-23 17:41:01

标签: php mysql sql join left-join

我需要将几个表中的数据导出到.csv文件中。我已经编写了CSV输出代码,但现在我需要正确构建查询。

每个表都包含USER_ID字段。该字段用于将用户的数据从一个表与另一个表相关联。我需要从这些表中获取所有数据,每个用户的信息都在一行中完全表示。

我需要的简单例子:

TABLE A
|USER ID | NAME | FAVORITE_COLOR | AGE |
|007     |James | black          | 46  |
----------------------------------------

TABLE B
|USER ID | JOB | LOCATION | NOTES    |
|007     |Agent| N/A      | cool guy | 
--------------------------------------


JOINED OUTPUT I NEED (albeit with many more users / tables):
|USER ID | NAME | FAVORITE_COLOR | AGE | JOB | LOCATION | NOTES    |
|007     |James | black          | 46  |Agent| N/A      | cool guy |
--------------------------------------------------------------------

我知道这可以通过joins完成,但我不知道如何进行选择所有用户的查询,并从多个表中连接所有数据,以便每个用户都是一行他们所有的数据。

任何帮助或代码轻推正确的方向表示赞赏! :)

4 个答案:

答案 0 :(得分:0)

尝试此查询

select t1.*,t2.* from table_1 as t1 left join table_2 as t2 on t1.user_id = t2.user_id 

答案 1 :(得分:0)

试试这个

 select t1.USER ID , NAME , FAVORITE_COLOR , AGE ,JOB , LOCATION , NOTES 
 from TABLE1 t1 
 INNER JOIN table2 t2  
 ON t1.USER_ID = t2.USER_ID

编辑>

如果您有3个或4个表,那么只需加入它们即可添加此

  INNER JOIN table3 t3  
  ON t2.USER_ID = t3.USER_ID
  INNER JOIN table4 t4  
  ON t3.USER_ID = t4.USER_ID

答案 2 :(得分:0)

使用以下表格

TABLE A
|USER ID | NAME | FAVORITE_COLOR | AGE |
|007     |James | black          | 46  |
|008     |John  | Doe            | 77  |
|010     |Amy   | McClain        | 26  |
----------------------------------------

TABLE B
|USER ID | JOB | LOCATION | NOTES    |
|007     |Agent| N/A      | cool guy |
|010     |Agent| MI       | babe     | 
--------------------------------------

SELECT TableA.*, TableB.*
FROM TableA
LEFT JOIN TableB
ON TableA.[USER ID] = TableB.[USER ID]

无论TableA中是否有匹配的记录,都会提取TableB中找到的所有记录。以下是结果:

|USER ID | NAME | FAVORITE_COLOR | AGE | JOB | LOCATION | NOTES    |
|007     |James | black          | 46  |Agent| N/A      | cool guy |
|008     |John  | Doe            | 77  |Null | Null     | Null     |
|010     |Amy   | McClain        | 26  |Agent| MI       | babe     |

通过将LEFT JOIN更改为INNER JOIN,您可以强制查询仅提取在两个表中找到的记录。以下是结果:

|USER ID | NAME | FAVORITE_COLOR | AGE | JOB | LOCATION | NOTES    |
|007     |James | black          | 46  |Agent| N/A      | cool guy |
|010     |Amy   | McClain        | 26  |Agent| MI       | babe     |

答案 3 :(得分:0)

尝试此查询

$qry = "SELECT t1.USER_ID,t1.NAME,t1.FAVORITE_COLOR,t1.AGE,t2.JOB,t2.LOCATION,t2.NOTES FROM TABLE_1 as t1 LEFT JOIN TABLE_2 as t2 ON t1.USER_ID = t2.USER_ID";