sql >> Database >  >> RDS >> Mysql

MYSQL inclusief waarden voor datums zonder itemtellingen

BEWERKT VOOR CORRIGEREND ANTWOORD:

http://sqlfiddle.com/#!2/ae665/4

SELECT date_format(datefield,'%Y-%m-%d') AS DATE, IFNULL(counts, 0), item_id FROM 
    dates a
LEFT JOIN 
    (SELECT COUNT(*) as counts, purchase_date,user_id,item_id 
     FROM items_purchased 
     WHERE item_id=1
     GROUP BY date(purchase_date),item_id )r 
ON date(a.datefield) = date(r.purchase_date) ;

De bovenstaande vraag is gebaseerd op een aanname:

UPDATE door @timpeterson (OP) Grote dank aan @Sel. Hier zijn sqlfiddles die beide vragen demonstreren waarin ik geïnteresseerd ben:

  1. Aankopen/dag voor alle items die eigendom zijn van één gebruiker (bijv. user_id=11 ):http://sqlfiddle.com/#!2/76c00/3
  2. Aankopen/dag voor item_id=1 die eigendom is van user_id=11 :http://sqlfiddle.com/#!2/76c00/1

hier is de SQL-code voor de 2e voor het geval de link op de een of andere manier wordt verbroken:

SELECT date_format(datefield,'%Y-%m-%d') AS DATE, 
IFNULL(countItem, 0), item_id
FROM dates a
LEFT JOIN 
(SELECT countItem, purchase_date,i.user_id,p.item_id FROM (
   SELECT count(*) as countItem, purchase_date,user_id,item_id 
   FROM items_purchased 
   GROUP BY date(purchase_date),item_id
   ) p 
 inner join items i
 on i.item_id=p.item_id
 WHERE p.item_id='1' and i.user_id='11' //just get rid of "p.item_id='1'" to produce the 1st query result
)r 
ON date(a.datefield) = date(r.purchase_date);



  1. Mysql laatste record voor aparte kolom

  2. Hoe de maximale weergavelengte van een kolom in PostgreSQL te beperken?

  3. ERROR 1118 (42000) Rijgrootte te groot

  4. PostgreSQL voor Windows ontwikkelen, deel 3