Materi
Kueri laporan sering menggabungkan lebih dari dua tabel. Setiap JOIN ditulis satu per satu dengan syarat ON-nya sendiri, dan tabel yang baru digabung bisa dipakai sebagai sandaran JOIN berikutnya.
SELECT pelanggan.nama, COUNT(*) AS jumlah_pesanan
FROM pesanan
JOIN pelanggan ON pelanggan.id = pesanan.pelanggan_id
GROUP BY pelanggan.nama
ORDER BY jumlah_pesanan DESC, pelanggan.nama;Nama yang diberikan dengan AS bisa dipakai kembali di ORDER BY, karena pengurutan dikerjakan sesudah kolom hasil selesai dihitung. Di WHERE nama itu belum ada, sehingga syarat di sana harus menulis ulang rumusnya.
Dari pelanggan sampai ke harga barang dibutuhkan empat tabel: pesanan menyimpan pelanggannya, detail_pesanan menyimpan isi pesanannya, dan produk menyimpan harganya. Rantai ON-nya mengikuti pasangan kolom id dengan kolom berakhiran _id.
Urutan penulisan JOIN tidak mengubah hasil INNER JOIN, karena pasangan barisnya ditentukan syarat ON. Yang berubah hanya cara SQLite membaca tabel, dan urutan pembacaan itu diatur sendiri oleh perencana kuerinya.