2014-08-28 107 views
0

我在MySQL 5.5 3個表:加入3代表的MySQL

產品

id_product int primary 
product_name varchar 
creation_id int (index) 

product_life

id_product_life int primary 
product_event_name varchar 
product_id int (index) 
creation_id int (index) 

DATE_CREATED

id_creation int primary 
date_creation datetime 
  • 「creation_id」從產品和product_life表對於DATE_CREATED表的主鍵id_creation外鍵(無約束)
  • 「PRODUCT_ID」從product_life表是用於產品的主鍵id_product外鍵(無約束)表

我需要檢索的某一天(date_creation >= '2014-08-01 00:00:00' AND date_creation <= '2014-08-01 23:59:59')創造出來的產品數量,但這些產品必須有沒有記錄在product_life表有date_creation >= '2014-08-10 00:00:00'

我嘗試了3個表上的INNER JOIN,但它不起作用。謝謝你的幫助。

+0

你必須嘗試左外連接與空子句:http://stackoverflow.com/questions/1519272/mysql-not-in-query – bksi 2014-08-28 23:03:37

+0

顯示你嘗試過什麼。 (給出查詢,數據和DDL。)(http://stackoverflow.com/help/mcve) – philipxy 2014-08-28 23:11:21

回答

0
SELECT * FROM product 
INNER JOIN date_created 
     ON date_created.id_creation = product.id_creation 
WHERE (date_creation >= '2014-08-01 00:00:00' AND date_creation <= '2014-08-01 23:59:59') 
    AND (SELECT COUNT(*) 
     FROM product_life 
     INNER JOIN date_created 
       ON date_created.id_creation = product.id_creation 
     WHERE product_id = product.id_product 
     AND date_creation >= '2014-08-10 00:00:00') = 0 
+0

合理的答案,雖然我認爲'NOT EXISTS(SELECT * ...)'通常優於'(SELECT COUNT(* )...)= 0'。 – Barmar 2014-08-28 23:31:57