Как мне получить результаты MySQL JOIN, где записи соответствуют критериям значения в объединенной таблице?
Это может быть просто, но я не могу понять ...
У меня две таблицы:
tbl_results:
runID | balance |
1 | 3432
2 | 5348
3 | 384
tbl_phases:
runID_fk | pc |
1 | 34
1 | 2
1 | 18
2 | 15
2 | 18
2 | 20
3 | -20
3 | 10
3 | 60
Я хочу получить набор записей: runID, balance, min(pc), max(pc) только там, где pc>10 и pc <50 для каждого runID как группы, за исключением runID, где любое связанное значение pc находится за пределами диапазона значений.
Я бы хотел получить следующие результаты из того, что описано выше:
runID | balance | min_pc | max_pc
2 | 5348 | 15 | 20
... потому что runID=1 и 3 имеют значения pc, которые выходят за пределы числового диапазона для pc, указанного выше.
Заранее спасибо!
1 ответ
Решение
Вы можете применять фильтры в соответствии с вашими требованиями в разделе наличия. Вы можете попробовать следующее.
Запрос №1
SELECT
r.runID,
MAX(r.balance) as balance,
MIN(p.pc) as min_pc,
MAX(p.pc) as max_pc
FROM
tbl_results r
INNER JOIN
tbl_phases p ON p.runID_fk = r.runID
GROUP BY
r.runID
HAVING
MIN(p.pc)>10 AND MAX(p.pc) < 50;
Посмотреть рабочую демонстрацию на DB Fiddle
Обновлено с комментариями Рахула Бисваса