如何从两个表中的多个列中选择数据,其中两个表中都有一个公共列?

时间:2013-10-04 02:04:07

标签: php mysql sql database

似乎是一个蛋糕走路,因为常见的列事,但我看起来,我看起来,无法在任何地方找到答案。人们可能会尝试做非常类似的事情,但每个人总是需要它与我需要的方式略有不同。无论如何这里... ...

职位表

+----+--------+----+----+----+
| id | userid | i1 | i2 | i3 |
+----+--------+----+----+----+
| 1  |   1    | a  | k  | t  |
| 2  |   1    | b  | l  | u  |
| 3  |   1    | c  | m  | v  |
| 4  |   2    | d  | n  | w  |
| 5  |   2    | f  | o  | x  |
| 6  |   2    | g  | p  | y  |
| 7  |   3    | h  | q  | z  |
| 8  |   3    | i  | r  | a  |
| 9  |   4    | j  | s  | b  |
+----+--------+----+----+----+

user_table表

+--------+----+----+----+
| userid | fn | ln | i4 |
+--------+----+----+----+
|   1    | a  | b  | w  |
|   2    | c  | d  | x  |
|   3    | e  | f  | y  |
|   4    | g  | h  | z  |
+--------+----+----+----+

我想从一个表中选择多个列,从另一个表中选择多个列,并且列的数量不同。因此,如果我从作业表中选择id,i1,i2和i3并从user_table表中选择fn,ln和i4,那么这意味着我从作业表中选择4条信息,从user_table中选择3条信息表

所以让我说我想选择一个特定的工作并显示该工作的信息,但我也想显示属于该工作的用户的信息,那么它可能会像这样......

工作1:

id:1,i1:a,i2:k,i3:t,fn:a,ln:b,i4:w

对于工作4,它将是:

id:4,i1:d,i2:n,i3:w,fn:c,ln:d,i4:x

jobs表和user_table表具有userid的公共列。那么如何使用这个常用列编写我的查询来执行上述操作?

我使用SELECT和WHERE以及AND和JOIN以及UNION和AS以及GROUP和BY尝试了各种各样的事情,并将表名与列名分开,并将表名和列名一起写入其间。我找不到写这个查询的正确方法。

在下面的这些示例中不起作用我只是尝试从user_table表中选择一个东西,以及来自作业表的所有东西都不是用户ID,但我需要能够从中选择多个东西第二张表,如果需要。所以我想从第一张桌子和第二张桌子中选择某些东西。

不起作用:

SELECT id, i1, i2, i3, i4 FROM jobs, user_table WHERE jobs.id = $id GROUP BY id

不起作用:

SELECT * from jobs where id = $id UNION SELECT i4 from user_table where userid = $userid

3 个答案:

答案 0 :(得分:3)

查询

SELECT * FROM jobs
INNER JOIN user_table on jobs.userid = user_table.userid

将使用用户信息加入您的职位信息。然后只需添加你的where子句:

SELECT * FROM jobs
INNER JOIN user_table on jobs.userid = user_table.userid
where jobs.id = $id

答案 1 :(得分:1)

你想加入这样的表:

SELECT j.column1, j.column2, u.column5, u.column6 
FROM 
  jobs j 
INNER JOIN 
  user_table u 
ON 
  u.userid = j.userid 
WHERE 
  j.id = $id

答案 2 :(得分:0)

SELECT id, i1, i2, i3, i4 FROM jobs 
inner join user_table on jobs.id = user_table.id WHERE jobs.id = $id GROUP BY id