Terima kasih telah membaca, saya sudah mencobanya selama empat jam sekarang dengan beberapa kemajuan yang baik tetapi saya tidak dapat memikirkannya.
Saya telah menyederhanakan aplikasi menjadi hanya parameter yang saya kesulitan.
Saya memiliki database pelanggan yang telah menggunakan layanan, satu untuk setiap tahun dan dua tabel pencarian untuk memungkinkan pengkodean hasilnya.
Table - Gender
gender_code | gender_name
1 | Male
2 | Female
3 | Other
Table - Service
service_code | service_name
1 | WiFi
2 | Network
3 | Telephone
Table - Customers13
transactionid | customerid | service_code | gender_code
1 | 4 | 3 | 1
2 | 7 | 1 | 2
3 | 9 | 1 | 1
Table - Customers14
transactionid | customerid | service_code | gender_code
1 | 13 | 2 | 2
2 | 4 | 2 | 1
3 | 17 | 2 | 2
Apa yang ingin saya dapatkan adalah tabel kembali yang memiliki semua kemungkinan permutasi layanan dan gender dan jumlah masing-masing untuk setiap tahun. Saya mulai mencoba menghitung dengan benar dan menggunakan kueri MySQL berikut:
select t.service_name, t.gender_name, count13, count14
from (select service_name, gender_name, count(Customers13.gender_code) as count13
from Customers13
inner join Gender on Customers13.gender_code = Gender.gender_code
inner join Service on Customers13.service_code = Service.service_code
group by service_name, gender_name) t
inner join (select service_name, gender_name, count(Customers14.gender_code) as count14
from Customers14
inner join Gender on Customers14.gender_code = Gender.gender_code
inner join Service on Customers14.service_code = Service.service_code
group by service_name, gender_name) m on m.service_name=t.service_name and
m.gender_name=t.gender_name
Ini membuat saya hampir mengembalikan tabel yang saya inginkan tetapi hanya jika ada kecocokan di kedua tabel. Yang saya inginkan adalah mendapatkan garis meskipun tidak ada kecocokan di tabel, misalnya:
service_name | gender_name | count13 | count14
WiFi | Male | 1 | 0
WiFi | Female | 1 | 0
WiFi | Other | 0 | 0
Network | Male | 0 | 1
Network | Female | 0 | 2
Network | Other | 0 | 0
Telephone | Male | 1 | 0
Telephone | Female | 0 | 0
Telephone | Other | 0 | 0
Upaya terakhir saya adalah menggunakan gabungan silang untuk mendapatkan dua kolom pertama dengan benar, tetapi saya tidak tahu cara melakukan lompatan untuk mengisi bidang penghitungan dari sana:
pilih nama_layanan, nama_gender dari Layanan gabung silang Gender