Упрощенной таблицы структуры, все INT столбцов и никаких первичных ключей вне столбцов идентичности:Выбор отдельных строк идентичности на основе наималейшего значения объединенного приоритета столбцы
Узлов (п) таблицы: id
Атрибуты (а) стол: id
, node_id
, type_id
Тип (т) стол: id
, priority
Я пытаюсь выбрать набор атрибутов, каждый из которых имеет самый низкий тип.priority для своего соответствующего узла. Хотя есть несколько атрибутов в node_id
, я только хочу, чтобы выбрать один с наименьшим значением приоритета:
a1 n1 t1 p0 *
a2 n1 t2 p1
a3 n2 t2 p1 *
a4 n2 t3 p2
Это основной вопрос, что я работаю с, в какой момент я также застревания:
SELECT *
FROM a
LEFT JOIN t ON a.type_id = t.id
GROUP BY node_id
Моя первая мысль была использовать агрегат, MIN, но я тогда возникают проблемы совмещая самый низкий приоритет для node_id с правильным атрибутом.
@Stiggler: Что означает «неявно выбранный» для вас? –
@Stiggler: Может ли атрибут быть связан с одним или несколькими node_id? Если да, это означает, что было бы два списка атрибутов с (возможно, разными) наименьшими приоритетами для любого количества узлов (при условии, что ATTRIBUTES.type_id не может быть нулевым). –