Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL, включително стойности за дати с нулев брой елементи

РЕДАКТИРАНО ЗА КОРИГИРАН ОТГОВОР:

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)Major благодарение на @Sel. Ето sqlfiddles, демонстриращи и двете заявки, които ме интересуват:

  1. Покупки/ден за всички артикули, притежавани от един потребител (напр. user_id=11 ):http://sqlfiddle.com/#!2/76c00/3
  2. Покупки/ден за 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);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да съпоставя два реда от mysql една и съща таблица в php

  2. Премахване на връщане на карета в Mysql DB

  3. Mysql хвърля изключение на Regex

  4. използване на нулеви стойности в подготвено изявление на mysqli

  5. MySQL Присъединете множество редове като колони