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


how do i select data from multiple columns from two tables where there is a common column in both?

似乎是小菜一碟,因为常见的列的事情,但是我已经看了又看,在任何地方都找不到答案。 人们可能正在尝试做非常相似的事情,但每个人需要它总是与我需要它的方式略有不同。 反正来了...

作业表

+----+--------+----+----+----+
| 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,然后从表中选择 FN、LN 和 I4 user_table则意味着我从作业表中选择 4 条信息,从表中选择 3 条信息user_table。

因此,假设我想选择一个特定的作业并显示该作业的信息,但我也想显示属于该作业的用户的信息,那么它可能会像这样......

作业 1:

编号: 1, I1: A,

I2: K, I3: T, FN: A, LN: B, I4: W

对于作业 4,它将是:

编号: 4, i1: d,

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

"作业"表和"user_table"表具有"用户标识"公共列。 那么我如何使用这个公共列编写查询来执行上述操作呢?

我尝试了各种各样的事情 SELECT 和 WHERE 和 AND 和 JOIN, UNION 和 AS 和 GROUP和 BY,并将表名与列名分开,并将表名和列名以及中间的句点一起写入。 我只是找不到编写此查询的正确方法。

在下面的这些不起作用的示例中,我只是尝试从user_table表中选择一件事,并从作业表中选择不是 userID 的所有内容,但如果需要,我需要能够从第二个表中选择多个内容。 所以我想从第一个表中选择所有内容,从第二个表中选择某些内容。

不起作用:

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

查询

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

您希望像这样连接表:

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

试试

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