Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tampilkan semua tanggal antara, bahkan jika tidak ada hasil

Anda dapat membuat kumpulan hasil otomatis menggunakan variabel MySQL untuk semua tanggal yang Anda inginkan.

select
      AllDaysYouWant.MyJoinDate,
      count( U.User_ID ) as NumberJoined
   from
      ( select
              @curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
           from
              ( select @curDate := '2012-11-21' ) sqlvars,
              Users
           limit 18 ) AllDaysYouWant
      LEFT JOIN Users U
         on AllDaysYouWant.MyJoinDate = U.User_JoinDate
   group by
      AllDaysYouWant.MyJoinDate

Permintaan batin, saya hanya bergabung ke tabel pengguna tanpa kunci, jadi itu hanya digunakan untuk menggilir X jumlah catatan untuk mewakili rentang hari yang Anda inginkan... Ini bisa menjadi 30, 100, apa pun.... Hanya selama tabel (dalam hal ini pengguna), memiliki catatan sebanyak yang Anda harapkan.

KEMUDIAN, hasil dari apa-apa selain hari digabungkan ke tabel pengguna, tetapi kali ini, berdasarkan JOIN_DATE pengguna. COUNT() sederhana akan memberikan apa yang Anda inginkan.

"AllDaysYouWant" adalah alias yang ditetapkan untuk kueri bagian pertama internal

  ( select
          @curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
       from
          ( select @curDate := '2012-11-21' ) sqlvars,
          Users
       limit 18 ) AllDaysYouWant

Ini pada dasarnya menyatakan ... Dari tabel pengguna (tetapi bisa berupa apa saja), beri saya 18 baris data (melalui batas, tetapi bisa berupa hampir semua jumlah catatan, tetapi Anda hanya perlu dari 22 November hingga 6 Desember, yang hanya 14 hari, tapi saya melakukannya 18 hanya untuk prinsip, itu bisa hampir apa saja. Di atas tabel Users adalah (select @curDate :='2012-11-21' ) sqlvars. Setiap pernyataan pilih dalam kueri yang dibungkus dalam tanda kurung sebagai sumber tabel harus diberi alias dan karena itu hanya variabel yang akan saya gunakan, tidak peduli apa namanya Jadi, kueri ini memulai variabel pada 21 Nov dan Select @curDate :=Date_Add... bla bla menyatakan untuk mengambil nilai saat ini dari @curDate, tambahkan 1 hari ke dalamnya (sekarang menjadi 22 Nov) dan simpan di baris yang dikembalikan "MyJoinDate". Jadi sekarang, kueri dalam ini membuat tabel Anda dengan tanggal mulai dari 22 Nov meneruskan data selama 18 hari dan memiliki alias "AllDaysYouWant" untuk referensi kueri lainnya.

Saya telah menyesuaikan kueri yang mungkin Anda temui, ke alias.field semuanya untuk klarifikasi...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Php - Instalasi PHP Anda tampaknya kehilangan ekstensi MySQL yang diperlukan oleh WordPress

  2. PHP mysql_num_rows mati kesalahan

  3. Bagaimana menghubungkan ke MySQL menggunakan Microsoft .NET

  4. BATAS offset atau OFFSET dalam kueri SQL UPDATE

  5. Fungsi MySQL ABS() – Mengembalikan Nilai Absolut suatu Angka