【发布时间】:2014-03-27 11:51:07
【问题描述】:
我有两张桌子
表 1:
id | user_id | pattern
1 | 3 | ^1212.*
2 | 3 | ^192.*
3 | 4 | ^20.*
表 2:
id |pattern | start_date | comment
1 |^1212.* | 2014-03-22 20:10:13 | India-Gujarat
2 |^1212.* | 2014-03-24 20:10:13 | India -Maharastra
3 |^1212.* | 2014-03-25 20:10:13 | India -uttar pradesh
4 |^1212.* | 2014-03-27 20:10:13 | India -Madhya pradesh
5 |^1212.* | 2014-03-29 20:10:13 | India -Rajasthan
6 |^192.* | 2014-03-22 20:10:13 | Africa
7 |^20.* | 2014-03-22 20:10:13 | Indonesia- first
8 |^20.* | 2014-03-26 20:10:13 | indonesia -second
9 |^1212.* | 2014-03-22 20:10:13 | India- kerala
10 |^13.* | 2014-03-22 20:10:13 | Usa
11 |^13.* | 2014-03-22 20:12:13 | usa
12 |^14.* | 2014-03-22 20:10:13 | U.k
所需输出:
id | pattern | start_date
8 |^20.* | 2014-03-26 20:10:13 | Indonesia-first
10 | ^13.* | 2014-03-22 20:12:13 | USA
12 | ^14.* | 2014-03-22 20:10:13 | U.k
输出要求:
- 基于 user_id={current user} 的模式在表 1 中不存在 在这里我们可以看到 user_id 有 1212,92,20 但它没有;在表 1 中没有 20,13,14 模式
- 表 2 中显示的模式及其注释以及 start_date 必须比当前时间最接近
- 模式必须不同
我已经尝试使用 php 代码执行 3 次查询,并且需要很长时间
- 从 table2 中按模式选择 distinct(pattern)
- select * from table1 where user_id = login_id
- php 中的 foreach 循环(从 table2 中选择 *,其中 id 不在(query2 的输出)和类似 ('123') 的模式)
那么是否可以在 postgresql 中使用单个查询
【问题讨论】:
-
我几乎什么都不懂。请更详细地描述您的问题。您想要表 2 的所有行,其模式在表 1 的
user_id= 当前用户的部分中不存在? -
@GhostGambler 是的
-
那么:为什么需要的输出中只有一个
^13.*模式? -
@joop nope 需要的模式是 20,13,14,在表 1 中未出现 user_id =13
标签: postgresql