Nie mogłem uzyskać oczekiwanych wyników za pomocą mojego zapytania i nie wiem dlaczego. Czy możesz mi pomóc i wyjaśnić mi to? więc generalnie uruchamiam tylko standardowe zapytania, takie jak to:

SELECT a.bimbel_kode,c.kriteria_kode,d.pencarian_kode, b.osk_val,d.bsk_val,
        ((d.bsk_val/100)*b.osk_val) as total
FROM bimbel_sub a 
    INNER JOIN opsi_sub_kriteria b ON a.osk_id=b.osk_id
    INNER JOIN sub_kriteria c on b.sk_id=c.sk_id
    INNER JOIN bobot_sub_kriteria d ON c.sk_id=d.sk_id
WHERE d.pencarian_kode='KDS7808b075'

W sumie nie mogłem uzyskać wyników, których chciałem.

To jest wynik, że mam z mojego zapytania Wpisz opis obrazu tutaj

for the total must be like this
total = (bsk_val/100) * osk_val
total = 50/100 * 4
total = 2
But why my reults be 0.12 ?

To moje skrzypce Fiddle

0
AdityaDS 7 styczeń 2020, 21:30

1 odpowiedź

Najlepsza odpowiedź

Twoja odpowiedź brzmi, ponieważ używasz ENUM. Rzutując ENUM na liczbę całkowitą, otrzymujesz sekwencję, a nie wartość (więc 100 to 1, 75 to 2, 50 to 3, 25 to 4 itd.).

Jeśli chcesz uniknąć tego problemu, powinieneś rzucić go do Varchar / Char, a następnie odrzuć go z powrotem:

CAST(CAST(d.bsk_val AS CHAR) AS SIGNED) / 100 * b.osk_val
2
scragar 7 styczeń 2020, 18:53