1. links: link_id, road
2. roads: road, code
2. admin_classes: code, admin_class, priority
Итак, для ОДНОГО LINK_ID У меня есть несколько кодов и несколько admin_class + приоритет Raws Но в итоге установить мне нужна только одну строку для каждого LINK_ID: LINK_ID и admin_class, что относится к минимальному приоритету. Я пытаюсь сделать SQL заявление, как следующее:SQL: как добавить условие на внутренних выберите
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
, но, во-первых, он не работает, и это не то, что мне нужно. Я хочу только два столбца в наборе результатов - LINK_ID и admin_class
Тогда я пытаюсь следующим:
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
Это правильно, но я не знаю, как добавить условие на внутреннем выборе, мне нужен только бараны с admin_class <> 0
Я использую PostgreSql 8,3
Спасибо заранее.
Извините, я попытался упростить и написал неверный)) у нас есть followng table 1: link_id, code. table2: id, code, road. table3: дорога, admin_class, приоритет. Таким образом, у нас есть несколько дорог для одного link_id и нескольких строк из таблицы 3 для одного link_id, но мы хотим получить link_id + admin_class с минимальным приоритетом) – user498274
Спасибо за ответ) Но мне нужно всего два столбца в наборе результатов, потому что я использую его в imsert clouse ((И последний оператор возвращает followng raws 1-2-2, 1-3-2, 1-4-2 для одного link_id = 1, но мне нужна только одна строка для одного link_id – user498274