У меня есть таблица MySQL (tbl_filters
) с 3 столбцами: id
, cat
, val
id
& val
- числовые значения, cat
- varchar. Для каждого идентификатора есть несколько строк.
У меня также есть другая таблица (tbl_info
) с несколькими столбцами, включая id
, что соответствует id
из tbl_filters
. Есть столбец с именем name
, который я ищу.
Я хотел бы выбрать имя всех строк, которые соответствуют установленному значению для cat
, но только если val
для cat
является максимальным для этого идентификатора, и только если оно выше минимального набор val
.
В псевдокоде это будет что-то вроде:
SELECT tbl_info.name FROM tbl_info,tbl_filters
WHERE (tbl_info.id=tbl_filters.id) AND (cat="mycat") AND (val>=0.3)
AND (there are no other rows for this id in tbl_info with a higher value for val)
Пример: * * тысяча двадцать-восемь
tbl_filters
id,cat,val
1 eg1 0.43
1 eg2 0.60
1 eg3 0.78
tbl_info
id name
1 MyName
В приведенном выше примере значение должно быть возвращено только в том случае, если я ищу cat
с именем eg3, поскольку оно имеет наибольшее значение. Для других кошек ничего не должно быть возвращено, так как они не имеют наибольшего значения.
Другим вариантом будет сделать столбец в tbl_info
только для кошки с наибольшим значением, но это грязное решение, которое я бы предпочел избегать.