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
4

1 に答える 1

2

これでうまくいくかもしれません。一度チェックしてください。

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
于 2013-05-24T09:37:32.197 に答える