Tahun baru, skill baru! 🚀. Masukkan kupon "skill2025" untuk diskon 30% di kelas apa saja

Menampilkan nilai max dengan matakuliah berbeda menggunakan inner join

Saya ada permasalahan query untuk menampilkan nama mahasiswa, nama matakuliah dan nilai. Permasalahannya nama matakuliah tidak sesuai dengan nilainya.

MariaDB [mahasiswa]> select * from tabel_mahasiswa;
+--------------+----------------+
| id_mahasiswa | nama_mahasiswa |
+--------------+----------------+
|         1001 | Panji          |
|         1002 | Mansur         |
|         1003 | Asep           |
+--------------+----------------+
3 rows in set (0.025 sec)

MariaDB [mahasiswa]> select * from tabel_matakuliah;
+---------------+-----------------+
| id_matakuliah | nama_matakuliah |
+---------------+-----------------+
|           101 | Algoritma       |
|           102 | Aljabar Linear  |
|           103 | Struktur Data   |
+---------------+-----------------+
3 rows in set (0.000 sec)

MariaDB [mahasiswa]> select * from tabel_nilai;
+----------+--------------+---------------+-------+
| id_nilai | id_mahasiswa | id_matakuliah | nilai |
+----------+--------------+---------------+-------+
|  1000001 |         1001 |           101 |    85 |
|  1000002 |         1001 |           102 |    75 |
|  1000003 |         1001 |           103 |    70 |
|  1000004 |         1002 |           101 |    69 |
|  1000005 |         1002 |           102 |    55 |
|  1000006 |         1002 |           103 |    90 |
|  1000007 |         1003 |           101 |    73 |
|  1000008 |         1003 |           102 |    81 |
|  1000009 |         1003 |           103 |    61 |
+----------+--------------+---------------+-------+
9 rows in set (0.000 sec)

Input query yang udah saya coba tapi tidak sesuai.

MariaDB [mahasiswa]> select distinct nama_mahasiswa, nama_matakuliah, nilai from tabel_nilai inner join tabel_mahasiswa on tabel_nilai.id_mahasiswa = tabel_mahasiswa.id_mahasiswa join tabel_matakuliah on tabel_nilai.id_matakuliah = tabel_matakuliah.id_matakuliah where nilai =(select max(nilai)from tabel_nilai) group by nama_mahasiswa;
+----------------+-----------------+-------+
| nama_mahasiswa | nama_matakuliah | nilai |
+----------------+-----------------+-------+
| Mansur         | Struktur Data   |    90 |
+----------------+-----------------+-------+

MariaDB [mahasiswa]> select distinct nama_mahasiswa, nama_matakuliah, max(nilai) as nilai from tabel_mahasiswa inner join tabel_nilai on tabel_mahasiswa.id_mahasiswa = tabel_nilai.id_mahasiswa join tabel_matakuliah on tabel_nilai.id_matakuliah = tabel_matakuliah.id_matakuliah group by nama_mahasiswa;
+----------------+-----------------+-------+
| nama_mahasiswa | nama_matakuliah | nilai |
+----------------+-----------------+-------+
| Asep           | Algoritma       |    81 |
| Mansur         | Algoritma       |    90 |
| Panji          | Algoritma       |    85 |
+----------------+-----------------+-------+

Terima kasih untuk jawabannya.

avatar rexor
@rexor

1 Kontribusi 0 Poin

Diperbarui 5 tahun yang lalu

Tanggapan

bolehkah saya meminta file sql nya

atau kamu coba dulu jangan menggunakan max(nilai) langsung ambil nilainya saja

https://github.com/prima18114519/Query-SQL/tree/master/mahasiswa

saya udah coba masih belum bisa mas. terimakasih sebelumnya.

coba share dump datanya gan

1 Jawaban:

Bagaimana jika "group by" nya menggunakan "WITH ROLLUP"

avatar insanz01
@insanz01

91 Kontribusi 56 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban