2012-08-29 127 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