structures de tableau simplifié, toutes les INT colonnes et pas PKs en dehors des colonnes d'identité:Sélection de lignes d'identité distinctes en fonction de la valeur la plus basse d'une colonne prioritaire rejoint
noeuds (n) Tableau: id
Attributs (a) tableau: id
, node_id
, type_id
type (t) tableau:J'essaie de sélectionner un ensemble d'attributs, dont chacun a la plus faible priorité de type pour son nœud respectif. Bien qu'il existe plusieurs attributs par node_id
, je veux seulement choisir celui avec la plus faible valeur de priorité:
a1 n1 t1 p0 *
a2 n1 t2 p1
a3 n2 t2 p1 *
a4 n2 t3 p2
Ceci est la requête de base que je travaille à partir, à quel point je suis aussi être coincé:
SELECT *
FROM a
LEFT JOIN t ON a.type_id = t.id
GROUP BY node_id
Ma première pensée était d'utiliser un agrégat, MIN, mais je suis alors des problèmes correspondant à la priorité la plus basse pour une node_id avec l'attribut correct.
@Stiggler: Que signifie "implicitement sélectionné" pour vous? –
@Stiggler: Un attribut peut-il être associé à un ou plusieurs node_id? Si oui, cela signifie qu'il y aura deux listes d'attributs avec des priorités les plus basses (éventuellement différentes) pour autant de noeuds (en supposant que ATTRIBUTES.type_id ne peut pas être nul). –