2012-08-29 130 views
0

希望标题不太含糊,但我会解释。对于高级查询,我很新,所以很不幸,这不像“我正在尝试这个”那么多,“我怎么会这样做”这样的问题。MySQL获取有记录但缺少特定记录的日期

我有一个用户活动表。当他们在网站上做些什么时,它会进入这个数据库。不幸的是,跟踪登录的方式发生了变化。因此,现在我需要为每个用户ID查找所有记录,检查每个记录的日期,并查看是否存在具有该日期特定ID的记录。

我知道这听起来有点令人困惑,所以我将它分解为最好的编程逻辑,我可以

  1. 按日期
  2. 对于每一日期为user_ID的订单记录获取列表,检查是否ID 5存在
  3. 如果ID 5不存在,告诉我

基本上我将插入该ID为如该ID不存在基于该日期表。

任何帮助将不胜感激。提前致谢。

编辑** 我忘了在这里添加一个基本的结构。

id  | user_id  | item_id  | stamp 
------------------------------------------------------ 
1  | user1  | 1   | 2012-08-25 
2  | user1  | 2   | 2012-08-25 
3  | user1  | 3   | 2012-08-25 
4  | user1  | 4   | 2012-08-25 
5  | user1  | 6   | 2012-08-25 
6  | user1  | 7   | 2012-08-25 
7  | user1  | 5   | 2012-08-26 
8  | user1  | 11   | 2012-08-26 
9  | user1  | 13   | 2012-08-26 

这就是基本结构。 User1在2012-08-25上缺少id 5,所以我需要在该日期添加它。 user1在2012-08-26上不会缺少id 5,所以我不需要插入任何东西。这是否清除了什么?

+0

SQLFiddle或至少一些结构信息将是非常有用的。 – Rudie

+0

我几乎只是在phpma中运行查询。我相信有更好的方法。我甚至不知道sqlfiddle是什么(我会在输入这个之后) – gin93r

+0

......我想我需要一个格式化我的帖子的教训,以便表格看起来像..表格。我把它输入干净,但它看起来像重新格式化文本。 – gin93r

回答

1
SELECT user_id, stamp 
FROM  my_table 
GROUP BY user_id, stamp 
HAVING NOT SUM(item_id=5) 

这里是您的样本数据的工作SQLFiddle例如:http://sqlfiddle.com/#!2/1ccf5/5

+1

打我吧:)我已经添加了我要发布的SQL小提琴示例(http://sqlfiddle.com/#!2/1ccf5/5)。 – theon

+0

这似乎是做的是给我一个日期的每个记录,但只是没有显示id 5的项目。但它仍然显示了id 5存在的日期。 – gin93r

+0

@Veo:请你能澄清一些示例数据?如sqlfiddle所示,只返回没有'item_id = 5'的'(user_id,stamp)'对。 – eggyal