问题构建PHP / MySQL加入查询

时间:2014-03-10 10:55:34

标签: php mysql join relational-database

我在尝试构建此JOIN查询时遇到了一些问题。任何帮助是极大的赞赏!谢谢!

我这里有3张桌子。 表A包含我们的“用户”。它们由id号标识。 表C包含由id号标识的位置。 表B包含表A和表C之间的连接.uid是用户的id,lid是位置的id。用户可能与多个位置相关联。

我需要构建一个查询,该查询将获取用户的id,找到与用户id相关联的所有位置并将其返回。

表A

|     id     |     name     |
-----------------------------
|     0      |     steven   |
-----------------------------
|     1      |      etc     |
-----------------------------

表B

|     id     |     uid      |     lid     |
-------------------------------------------
|     0      |      0       |      1      |
-------------------------------------------
|     1      |      1       |      1      |
-------------------------------------------

表C

|     id     |   location_name   |
----------------------------------
|     0      |    santa monica   |
----------------------------------
|     1      |      hamptons     |
----------------------------------

4 个答案:

答案 0 :(得分:1)

您可以尝试以下

SELECT 
    A.id as user_id,
    A.name as user_name,
    C.location_name as location
FROM
    TableA A
        JOIN
    TableB B ON A.id = B.uid
        JOIN
    TableC C ON B.lid = C.id
WHERE
    A.id = 0;

答案 1 :(得分:1)

SELECT u.id, u.name, l.id, l.location_name
FROM users u
JOIN connection c
ON c.uid = u.id
JOIN locations l
ON c.lid = l.id
WHERE u.id=?
GROUP BY l.id;  

答案 2 :(得分:1)

   select A.name, C.location_name from B inner join A on B.uid=A.id inner join C on B.lid= C.id where A.id='".$id."' ;

此处$ id将是您输入的用户ID

答案 3 :(得分:1)

我会说你删除了表B,只有表A和表C.

表A

|     id     |     name     |
-----------------------------
|     0      |     steven   |
-----------------------------
|     1      |      etc     |
-----------------------------

表C

|     id     |   location_name   |   uid  | 
-------------------------------------------
|     0      |    santa monica   |   0    |
-------------------------------------------   
|     1      |      hamptons     |   1    |
-------------------------------------------

我提出的表C有一个引用表A的id

的外键

现在您可以查询,

select * from tableA A
inner join
tableB B on
A.id = B.uid