2013-03-27 3 views
0

Я пробовал это, но не смог вернуть все строки. Он возвращает только несколько строк из левого запроса. Найдите ошибку.Застрял с левым соединением

SELECT c.star_ident, c.fix_ident 
from corept.std_star_leg as c 
INNER JOIN 
(
    SELECT star_ident, 
    transition_ident, 
    max(sequence_num) seq, 
    route_type 
    FROM  corept.std_star_leg 
    WHERE data_supplier='J' 
    AND airport_ident='KOPF' 
    group by star_ident,transition_ident 
) b 
    ON c.sequence_num=b.seq 
    and c.star_ident=b.star_ident 
    and c.transition_ident=b.transition_ident 
LEFT OUTER JOIN 
(
    SELECT name, 
    trans 
    FROM skyplan_deploy.deploy_stars d 
    WHERE apt='KOPF' 
    AND name!=trans 
) as x 
    on x.name=c.star_ident 
    and x.trans=c.transition_ident 
where c.data_supplier='J' 
    and c.airport_ident='KOPF' 
    and x.name is null; 

Позвольте corept.std_star_leg таблице быть этим.

star_ident transition_ident sequence_num fix_ident airport 
A    XX    10   QWE  KOPF 
A    XX    20   WER  KOPF 
A    XX    30   HYU  KOPF 
A    XX    40   GJI  KOPF 
B    YY    10   SJI  KOPF 
B    YY    20   DJI  KOPF 
B    YY    30   FJI  KOPF 
B    YY    40   GHI  KOPF 
B    YY    50   KDI  KOPF 

После выполнения внутреннего соединения результат будет получен следующим образом.

A    XX    40   GJI 
B    YY    50   KDI 

Таким образом, получение максимального количества sequence_num строк. После этого таблица skyplan_deploy.deploy_stars будет следующей.

apt   name    trans  
KOPF   A     FJI 
KOPF   A     DHI 
KOPF   B     VNM 

Мне нужно вывести

A GJI 
B KDI 
+0

0 Вы думаете, что можете добавить что-нибудь, чтобы воссоздать стол или поместить его в sqlfiddle? Немного сложно проверить запрос таким образом. –

+0

Если вам нужно вывести GJI и KDI, а внутренний сустав получит оба, почему бы просто не вывести это? – Patashu

+0

U didnt получить меня .. просто пример ... я не могу о/р и GJI и KDI .. @ Patashu – user2037445

ответ

2

Это может work.Check один раз.

SELECT DISTINCT c.airport_ident,c.sid_ident,c.transition_ident,c.fix_ident 
       FROM corept.std_sid_leg c 
       INNER JOIN 
       (SELECT sid_ident,transition_ident,max(sequence_num) seq,route_type 
       FROM corept.std_sid_leg 
       WHERE data_supplier='J' 
       AND airport_ident='KOPF' 
       GROUP BY sid_ident,transition_ident)b 
       ON c.sequence_num=b.seq AND c.sid_ident=b.sid_ident AND c.transition_ident=b.transition_ident 
       LEFT JOIN 
       (SELECT name,trans 
        FROM skyplan_deploy.deploy_sids 
        WHERE apt='KOPF' 
        AND name!=trans) d 
       ON d.name=c.sid_ident AND d.trans=c.fix_ident 
       WHERE c.data_supplier='J' AND c.airport_ident='KOPF' AND d.name is null 
Смежные вопросы