2011-11-18 40 views
0

我正在尋找一種方法,使查詢與2個表:合併兩個表之前讓我的查詢?

posts: 
+----+-------------------- + 
| ID | post_date   | 
+----+---------------------+ 
| 1 | 2011-11-15 08:42:50 | 
+----+---------------------+ 

meta: 
+--------------------+------------+ 
| post_id | meta_key | meta_value | 
+---------+----------+------------+ 
| 1 | ip |192.168.1.10| 
+---------+----------+------------+ 

所以,我需要做一個查詢至極的外觀對於給定的IP,並返回ID,但帖子的日期必須在至少10分鐘老。

這是一個不好的例子:

SELECT ID 
FROM posts 
WHERE ip = '192.168.0.1' 
    AND post_date = '2011-11-15 08:32:50' 

回答

4
SELECT p.ID FROM posts p, meta m 
    WHERE m.post_id=p.ID 
    AND m.meta_value='192.168.0.1' 
    AND p.post_date < (NOW() - INTERVAL 10 MINUTE); 
4
SELECT p.ID 
    FROM posts p 
     INNER JOIN meta m 
      ON p.ID = m.post_id 
    WHERE m.meta_key = 'ip' 
     AND m.meta_value = '192.168.0.1' 
     AND p.post_date < DATE_SUB(NOW(), INTERVAL 10 MINUTE) 
+0

啊哈.....輝煌.... – Flukey

+0

「後必須是至少10分鐘,老了......」 - 你的答案是非常具體的時間 – Bruce

+0

@Bruce:發佈的示例代碼也是如此。這個問題似乎更多關於如何完成JOIN。 –

0
SELECT p.ID from posts p 
INNER JOIN meta m ON (p.ID=m.post_id) 

WHERE 
m.ip = '192.168.0.1' 
    AND 
TIMESTAMPDIFF(MINUTE,p.post_date,now()) > 10