उत्तर सुधारने के लिए संपादित:
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) ;
उपरोक्त क्वेरी धारणा पर आधारित है:
अपडेट @timpeterson (OP) द्वारा @Sel को प्रमुख धन्यवाद। मेरी रुचि के दोनों प्रश्नों को प्रदर्शित करने वाले sqlfiddles यहां दिए गए हैं:
- एक ही उपयोगकर्ता के स्वामित्व वाले सभी आइटम के लिए खरीदारी/दिन (उदा.,
user_id=11
):http://sqlfiddle.com/#!2/76c00/3 item_id=1
. के लिए खरीदारी/दिन जिसका स्वामित्वuser_id=11
. के पास है :http://sqlfiddle.com/#!2/76c00/1
लिंक के किसी तरह टूट जाने की स्थिति में दूसरे कोड का SQL कोड यहां दिया गया है:
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);