у нас работает академическая база данных
столбец табель mata_kuliah
id
nm_mk
kode_mk
значения таблиц mata_kuliah
id | nm_mk | kode_mk
1 | algoritma | TI001
2 | databases | TI002
3 | java | TI003
4 | OOP | TI004
5 | theses | TI005
столбец табель махасисва
id_mhs
nm_mhs
npm_mhs
значения tabel mahasiswa
id | nm_mhs | npm_mhs
1 | Andi | 18.14.1.0001
2 | Soraya | 18.14.1.0002
3 | Mumun | 18.14.1.0003
4 | Dede | 18.14.1.0004
5 | Udin | 18.14.1.0005
мы переходим от предыдущего дБ к новому, в результате мы должны вызвать другую таблицу для 1 результата (академический результат)
столбец nilai_lama
id_nilai_lama
id_mk
id_mhs
nilai_mk
столбец nilai_baru
id_nilai_baru
id_mk
id_mhs
nilai_mk
столбец nilai_konversi
id_nilai_konversi
id_mk
npm_mhs
nilai_mk
значения табеля nilai_lama
id_nilai_lama | id_mk | npm_mhs | nilai_mk
1 | 1 | 18.14.1.0001 | 3
2 | 1 | 18.14.1.0002 | 4
3 | 1 | 18.14.1.0003 | 3
4 | 1 | 18.14.1.0004 | 3
5 | 1 | 18.14.1.0005 | 4
значения табеля nilai_baru
id_nilai_baru | id_mk | npm_mhs | nilai_mk
1 | 2 | 18.14.1.0001 | 3
2 | 2 | 18.14.1.0002 | 4
3 | 2 | 18.14.1.0003 | 3
4 | 2 | 18.14.1.0004 | 3
5 | 2 | 18.14.1.0005 | 4
6 | 1 | 18.14.1.0001 | 4 (same id_mk, npm_mhs but hihger nilai_mk)
значения таблиц nilai_konversi
id_nilai_konversi | id_mk | npm_mhs | nilai_mk
1 | 3 | 18.14.1.0001 | 3
2 | 3 | 18.14.1.0002 | 4
3 | 3 | 18.14.1.0003 | 3
4 | 3 | 18.14.1.0004 | 3
5 | 3 | 18.14.1.0005 | 4
6 | 3 | 18.14.1.0003 | 4 (take course twice but diff result)
Запрос
select
a.id_mk,
b.nilai_mk,
b.npm_mhs
from
mata_kuliah a
left join
(
(select id_mk,max(nilai_mk),npm_mhs from nilai_lama group by id_mk)
or
(select id_mk,max(nilai_mk),npm_mhs from nilai_baru group by id_mk)
or
(select id_mk,max(nilai_mk),npm_mhs from nilai_konversi group by id_mk)
) b
on
a.id_mk=b.id_mk and npm_mhs=?
ожидаемый результат npm_mhs = 18.14.1.0001
id_mk | nilai_mk | npm_mhs
1 | 4 | 18.14.1.0001 (value in nilai_baru is higher)
2 | 3 | 18.14.1.0001
3 | 3 | 18.14.1.0001
ожидаемый результат npm_mhs = 18.14.1.0003
id_mk | nilai_mk | npm_mhs
1 | 3 | 18.14.1.0003
2 | 4 | 18.14.1.0003 (has twice result in same tabel)
3 | 3 | 18.14.1.0003
это можно сделать?