连接三个表/ SQL

时间:2018-08-21 23:56:50

标签: sql join

我知道连接三个表已经在这里作为主题,但是我不知道如何在我的示例中实现这些...这是我所拥有的:

$id = _GET[ 'id' ]

表1:

mid  |  name   
11              . . .  johan
22    . . .   zoki

表2:

id    |  mid | time
1    . . 11   . 1234
1  .   . 22.. ..1111
2...   ..11.... 1112

表3:

id | num2 | surname
1 . 212 . pogancic
2 . 111 . pajser

我需要什么:从3个表中加载所有内容。我的尝试是:

SELECT *
FROM table2 JOIN
     table1
     ON table1.mid=table2.mid
WHERE id=$id

但是以这种方式,我无法获得“姓氏” ...也尝试添加另一个JOIN:

SELECT *
FROM table2 JOIN
     table1
     ON table1.mid=table2.mid JOIN
     table3
     ON table3.id=table2.id
WHERE id=$id

但没有积极的结果;有什么帮助吗?

编辑:使用WHERE id=$id无法获得结果;似乎有问题,不是在

2 个答案:

答案 0 :(得分:0)

您的查询看起来不错。数据可能有问题。您描述的数据是:

create table table1 (
  mid int,
  name varchar(20)
);

insert into table1 (mid, name) values (11, 'johan');
insert into table1 (mid, name) values (22, 'zoki');

create table table2 (
  id int,
  mid int,
  time int
);

insert into table2 (id, mid, time) values (1, 11, 1234);
insert into table2 (id, mid, time) values (1, 22, 1111);
insert into table2 (id, mid, time) values (2, 11, 1112);

create table table3 (
  id int,
  num2 int,
  surname varchar(20)
);

insert into table3 (id, num2, surname) values (1, 212, 'pogancic');
insert into table3 (id, num2, surname) values (2, 111, 'pajser');

因此,查询应为:

select t1.*, t2.*, t3.*
  from table2 t2
  join table1 t1 on t2.mid = t1.mid
  join table3 t3 on t3.id = t2.id

结果:

mid  name   id  mid  time  id  num2  surname
---  -----  --  ---  ----  --  ----  --------
11   johan  1   11   1234  1   212   pogancic
11   johan  1   11   1234  1   212   pogancic
11   johan  2   11   1112  2   111   pajser
22   zoki   1   22   1111  1   212   pogancic

这是您想要的吗?

答案 1 :(得分:-1)

好,我知道了。感谢@Scott Hunter提醒我。问题是:

WHERE id = $ id-> WHERE table2.id = $ id