0

我有 2 个这样的表:

表格1

+----+------------+--------+
| 身份证 | 邮编4 | woonplaats |
+----+------------+--------+
| 1 | 9044 | 甜菜胶 |
| 2 | 9045 | 甜菜糖 |
| 3 | 1028 | 阿姆斯特丹 |
| 4 | 1029 | 阿姆斯特丹 |
| 5 | 1030 | 阿姆斯特丹 |
+----+------------+--------+

表 2

+----+------+------+
| 身份证 | 4PP | 地区 |
+----+------+------+
| 1 | 9044 | 2 |
| 2 | 9045 | 2 |
| 3 | 1028 | 4 |
| 4 | 1029 | 4 |
| 5 | 1030 | 4 |
+----+------+------+

我首先要选择 Beetgum 中的区域,在本例中为区域 2。然后我希望表 2 中的所有其他 4PP 具有相同的区域 (2)。所以查询的结果必须是 9044,9045

4

4 回答 4

3

这是一个加入的:)

SELECT t2.*
FROM Table1 
INNER JOIN Table2 ON Table2.4PP = Table1.Postcode4
INNER JOIN Table2 t2 ON t2.Regio = Table2.regio
WHERE Table1.woonplaats = 'Beetgum'

小提琴:http ://sqlfiddle.com/#!2/347f3/3

于 2013-03-14T20:07:42.140 回答
1

这是一个非常糟糕的查询,直到有人给你一个花哨的连接(然后你应该使用它)

select t.4PP from Table2 t
WHERE t.Regio in
(
  select Regio
  from Table2 t2
  join Table1 t1 on t2.4PP=t1.Postcode4
  where t1.woonplats='Beetgum'
)
于 2013-03-14T20:07:04.107 回答
0

这应该这样做

select 4PP from table2 where Regio in (select Regio from table2 where 4PP in (select PostCode4 from table1 where woonplaats = "Beetgum"))
于 2013-03-14T20:04:41.460 回答
0

似乎这就是你要找的东西:

SELECT GROUP_CONCAT(Table3.4PP) 4PP FROM Table1
INNER JOIN Table2 ON(Table1.PostCode4 = Table2.4PP) 
INNER JOIN Table2 AS Table3 ON(Table2.Regio = Table3.Regio) 
WHERE woonplaats = 'Beetgum';

演示

于 2013-03-14T20:17:49.260 回答