Bagaimana untuk mengembalikan output jadual pangsi dalam MySQL?
P粉578343994
2023-07-25 13:59:22
<p>Jika saya mempunyai jadual MySQL seperti ini:</p>
<pra>bilangan halaman tindakan nama_syarikat
----------------------------------
CETAKAN SYARIKAT 3
CETAKAN SYARIKAT 2
CETAKAN SYARIKAT 3
Syarikat BEMAIL
Syarikat B CETAKAN 2
Syarikat B CETAKAN 2
SYARIKAT B CETAKAN 1
CETAKAN SYARIKAT 3
</pra>
<p>Bolehkah anda menjalankan pertanyaan MySQL untuk mendapatkan output berikut:</p>
<pra>nama_syarikat CETAK EMEL 1 halaman CETAK 2 halaman CETAK 3 halaman
------------------------------------------------- ----------
SyarikatA 0 0 1 3
SyarikatB 1 1 2 0
</pra>
<p>Ideanya ialah kiraan halaman boleh berbeza-beza, jadi bilangan lajur dalam output harus mencerminkan ini, dengan satu lajur untuk setiap tindakan/kiraan halaman, dan kemudian mengira bilangan klik untuk setiap nama syarikat. Saya tidak pasti sama ada ini dipanggil jadual pangsi, tetapi seseorang telah mencadangkan untuk melakukan ini. </p>
Penyelesaian saya ialah menggunakan T-SQL dan bukannya sebarang jadual pangsi:
Ini pada asasnya jadual pangsi.
Tutorial terperinci tentang cara melaksanakan ini boleh didapati di sini: http://www.artfulsoftware.com/infotree/qrytip.php?id=78
Saya mengesyorkan membaca artikel ini dan menyesuaikannya dengan keperluan anda sendiri.
KEMASKINI
Memandangkan pautan di atas tidak lagi tersedia pada masa ini, saya merasakan perlu untuk memberikan beberapa maklumat tambahan untuk sesiapa yang mencari jawapan kepada Jadual Pangsi MySQL di sini. Pautan ini benar-benar mempunyai banyak maklumat, saya tidak akan menyalin semuanya (dan saya tidak mahu menyalin kekayaan pengetahuan mereka), tetapi saya akan memberi nasihat tentang cara bekerja dengan jadual pangsi dalam SQL, dengan peku Ambil soalan yang dikemukakan sebagai contoh.
Mungkin pautan akan dipulihkan tidak lama lagi, saya akan memerhatikannya.
Cara hamparan...
Ramai orang hanya menggunakan alatan seperti MSExcel, OpenOffice atau alatan hamparan lain untuk menyelesaikan tugas ini. Ini adalah penyelesaian yang sah, hanya salin data di sana dan gunakan alat yang disediakan oleh GUI untuk menyelesaikan masalah.
Tetapi...ini bukan pokok masalah, malah mungkin membawa kepada beberapa keburukan, seperti cara mengimport data ke dalam hamparan, isu kebolehskalaan, dsb.
SQL way...
Andaikan jadualnya kelihatan seperti ini:
Sekarang lihat jadual jangkaan:
Line (EMAIL, print x pages) adalah seperti syarat. Kumpulan utama adalah mengikut nama syarikat.
Untuk menetapkan syarat, lebih sesuai menggunakan CASE statement. Untuk mengumpulkan mengikut sesuatu, anda boleh menggunakan GROUP BY.
Pernyataan SQL asas untuk menyediakan jadual pangsi ini mungkin kelihatan seperti ini:
Ini sepatutnya memberikan hasil yang diingini dengan cepat. Kelemahan utama pendekatan ini ialah lebih banyak baris yang anda mahu ada dalam jadual pangsi, lebih banyak syarat yang perlu anda tentukan dalam pernyataan SQL.
Masalah ini juga boleh diselesaikan, jadi orang cenderung menggunakan kenyataan, rutin, kaunter, dll.
Berikut ialah beberapa pautan tambahan mengenai topik ini: