Как мне получить результаты 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

Обновлено с комментариями Рахула Бисваса

Другие вопросы по тегам