Я пытаюсь выполнить внутреннее соединение двух таблиц, чтобы можно было округлить значение по точности, связанной с pid этого значения в другой таблице. Тем не менее, он возвращает NULL для pid 3. Я полагаю, что это связано с точностью NULL для pid 2, потому что, когда я устанавливаю его точность, отличную от NULL, я получаю правильное значение для pid 3 в запросе ниже.
Как я могу реструктурировать этот запрос, чтобы он всегда возвращал правильное значение, даже если другой pid имеет точность NULL?
select pid_values.pid, pid_values.value, round(value, pids.precision)
from pid_values inner join pids on pid_values.pid = pids.pid;
+------+--------+------------------------------+
| pid | value | round(value, pids.precision) |
+------+--------+------------------------------+
| 1 | 10.123 | 10 |
| 2 | 5.5 | 6 |
| 3 | 3.1234 | NULL |
+------+--------+------------------------------+
Данные в обеих таблицах:
select * from pids;
+------+-----------+
| pid | precision |
+------+-----------+
| 1 | 0 |
| 2 | NULL |
| 3 | 1 |
+------+-----------+
select * from pid_values
+----+------+--------+
| id | pid | value |
+----+------+--------+
| 1 | 1 | 10.123 |
| 2 | 2 | 5.5 |
| 3 | 3 | 3.1234 |
+----+------+--------+