2012-03-05 70 views
0

我有一個問題需要解決:我有三個與內部聯接連接的表。然而,在這個名爲"products","shopping cart","purchase"的三張表中,我需要做一個左連接,以獲得尚未在店鋪系統中購買的用戶列表。Left與SQL中的INNER JOIN加入聯繫

爲此,我試圖做一個左側的實體"products" -> "shopping cart"加入之後,我嘗試了內連接beetwen購買和購物車

結果呢?沒有一個(系統忽略請求)。

我的目標是在給定的時間間隔內將所有購買的商品退回給用戶。

爲了確保所有信息的安全,我隨附了一張帶有照片的數據庫副本。

SELECT prodotti.nome_prodotto, carrello.quantita, acquisto.data_acquisto 
FROM ( subquery.prodotti prodotti 
LEFT JOIN subquery.carrello carrello 
    ON (prodotti.id_prodotto = carrello.id_prodotto)) 
     JOIN subquery.acquisto acquisto 
     ON (acquisto.id_acquisto = carrello.id_acquisto) 

我已經試過這樣的解決方案:

SELECT prodotti.nome_prodotto, acquisto.data_acquisto, carrello.quantita 
FROM (prodotti 
      LEFT JOIN carrello 
      ON prodotti.id_prodotto = carrello.id_prodotto)   
INNER JOIN   acquisto 
    ON acquisto.id_acquisto = carrello.id_acquisto 

SELECT prodotti.nome_prodotto, acquisto.data_acquisto, carrello.quantita 
FROM (acquisto 
     INNER JOIN carrello 
      ON acquisto.id_acquisto = carrello.id_acquisto) 
LEFT JOIN prodotti 
    ON prodotti.id_prodotto = carrello.id_prodotto 

但沒有...我返回結果像內部聯接

PS:那裏你可以找到數據庫副本和蟾蜍文件

http://www.ricetteingironelweb.it/Desktop.zip

回答

0

試着做你的LEFT JOIN畢竟你的INNER JOIN s。

+0

我試圖該SELECT prodotti.nome_prodotto,acquisto.data_acquisto,carrello.quantita FROM(acquisto INNER JOIN carrello ON acquisto.id_acquisto = carrello.id_acquisto) LEFT JOIN PRODOTTI ON prodotti.id_prodotto = carrello.id_prodotto – Seojudo 2012-03-06 14:32:00

0

編輯:在閱讀您的評論之後,我更加了解了這個問題 - 聽起來好像您試圖查看購物車中的物品的數據,但尚未在X時間內購買。

要做到這一點,LEFT JOINpurchase表,然後使用WHERE條款將結果限制在一個特定的時間差異。由於我們使用的是左連接,因此購買表並不總是有價值的,所以在這種情況下,我們使用IFNULL來指定當天的數學日期(如果購物車中的商品尚未購買,請找出從今天起幾天,它已經在購物車中)。

SELECT /*products in cart*/ 
    prodotti.nome_prodotto 
    ,carrello.quantita 
FROM 
    prodotti 
    INNER JOIN carrello 
     ON prodotti.id_prodotto = carrello.id_prodotto 
    LEFT JOIN acquisto 
     ON acquisto.id_prodotto = carrello.id_prodotto 
WHERE 
    /* show only items over a certain age - 5 days in this example */ 
    DATEDIFF((ifnull(acquisto.id_acquisto,NOW()) /* use today's date if purchase doesn't exist */ 
     - carrello.id_acquisto) > 5) 
+0

mmm ..我有3個表:「產品」,「購物車」,「購買」....我需要看看什麼元素是不是在X天購買 – Seojudo 2012-03-06 14:42:29

+0

我已經更新了一點響應,希望它會多一點幫助。 – Chris 2012-03-06 17:02:02