Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MYSQL bao gồm các giá trị cho các ngày có số mục bằng không

CHỈNH SỬA ĐỂ SỬA CÂU TRẢ LỜI:

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) ;

Truy vấn trên dựa trên giả định:

CẬP NHẬT bởi @timpeterson (OP) Chính nhờ @Sel. Đây là sqlfiddles thể hiện cả hai truy vấn mà tôi quan tâm:

  1. Các giao dịch mua / ngày đối với tất cả các mặt hàng do một người dùng sở hữu (ví dụ:user_id=11 ): http://sqlfiddle.com/#!2/76c00/3
  2. Các giao dịch mua / ngày cho item_id=1 thuộc sở hữu của user_id=11 : http://sqlfiddle.com/#!2/76c00/1

đây là mã SQL cho mã thứ 2 trong trường hợp liên kết bị hỏng bằng cách nào đó:

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. Làm cách nào để lấy giá trị IDENTITY / AUTONUMBER cho hàng tôi đã chèn trong pymysql

  2. Làm thế nào để xác định xử lý null trong các loại JPA Dữ liệu mùa xuân?

  3. Cách tốt nhất để chỉ chèn tháng, ngày và giờ trong bảng cơ sở dữ liệu là gì?

  4. Công ty lưu trữ web của tôi cho biết có điều gì đó sai với mã PHP

  5. Lập chỉ mục một cột có các giá trị trùng lặp