1. links: link_id, road
2. roads: road, code
2. admin_classes: code, admin_class, priority
Donc, pour une LINK_ID j'ai plusieurs codes et plusieurs RAWs admin_class + priorité Mais le jeu de résultats i besoin que d'une ligne pour chaque link_id: link_id et admin_class, que fait référence à la priorité min. J'essaie de faire une déclaration sql, comme suit:SQL: comment ajouter la condition sur une sélection intérieure
select l.link_id, ac.admin_class, min(ac.priority)
from base.links as l
inner join base.admin_classes as ac
on ac.code=l.code
where ac.admin_class<>0
mais, d'une part, il ne fonctionne pas et il n'est pas que j'ai besoin. Je veux seulement deux colonnes en jeu de résultats - link_id et admin_class
Ensuite, j'essaie suivants:
select l.link_id, (select ac.admin_class from base.admin_classes as ac where ac.code=l.code
order by ac.priority limit 1) as admin_class from base.links as l
Il est juste, mais je ne sais comment ajouter la condition sur certains intérieur, je ne ai besoin RAWs avec admin_class <> 0
J'utilise PostgreSql 8.3
Merci à l'avance.
Désolé, j'ai essayé de simplifier et j'ai écrit incorrect)) nous avons le tableau 1 suivant: link_id, code. table2: id, code, route. table3: route, admin_class, priorité. Donc nous avons plusieurs routes pour un link_id et plusieurs lignes de table 3 pour un link_id, mais nous voulons obtenir link_id + admin_class avec priorité min) – user498274
Merci pour la réponse) Mais je n'ai besoin que de deux colonnes dans le jeu de résultats car je l'utilise dans imsert clouse ((Et la dernière déclaration retournera les matières suivantes 1-2-2, 1-3-2, 1-4-2 pour un link_id = 1, mais je n'ai besoin que d'une ligne pour un link_id – user498274