2017-11-17 16 views
0

私は2つのテーブルをアナログにしたい、これらの2つのテーブルは同じですが、私は私のクエリを実行するとすべてのデータを取得します。どうして?2つのテーブルが同じ場合、なぜデータが存在しないのですか? (Python、mysql)

connection = MySQLdb.connect(host='localhost', 
    user='adam', 
    passwd='', 
    db='database1', 
    use_unicode=True, 
    charset="utf8") 
cursor = connection.cursor() 
query = """ select `ACTUAL_TIME`, `ACTUAL_DAY`, `EXAMINED_AIRPORT_CODE`, `EXAMINED_AIRPORT_AIRPORT`,  `EXAMINED_AIRPORT_COUNTRY`, `ARRIVALS/DEPARTURES`, `SCHEDULED_TIME`, `FLIGHT`, `FROM`, `AIRLANE`,`AIRCRAFT`, `STATUS`, `FLIGHT_ID_1`, `FLIGHT_ID_2`, `UPLOAD_TIME` 
from OSSZES as a 
where not exists(select `ACTUAL_TIME`, `ACTUAL_DAY`,`EXAMINED_AIRPORT_CODE`, `EXAMINED_AIRPORT_AIRPORT`, `EXAMINED_AIRPORT_COUNTRY`, `ARRIVALS/DEPARTURES`, `SCHEDULED_TIME`, `FLIGHT`, `FROM`, `AIRLANE`,`AIRCRAFT`, `STATUS`, `FLIGHT_ID_1`, `FLIGHT_ID_2`, `UPLOAD_TIME` 
from OSSZES_CLEAR as b 
where `a`.`ACTUAL_DAY` = `b`.`ACTUAL_DAY` AND `a`.`EXAMINED_AIRPORT_CODE` = `b`.`EXAMINED_AIRPORT_CODE` AND `a`.`FLIGHT` = `b`.`FLIGHT` AND `a`.`SCHEDULED_TIME` = `b`.`SCHEDULED_TIME` AND `a`.`STATUS` = `b`.`STATUS`) 
    into outfile '/tmp/proba.csv' 
    fields terminated by ';' 
    enclosed by '"' 
    lines terminated by '\n'; 
    """ 
cursor.execute(query) 
connection.commit() 
cursor.close() 

答えて

0

あなたのやりたいことは少し不明です。テーブルbの対応するレコードが存在しないテーブルのすべてのレコードが必要であり、サブクエリのロジックが適切な結合を定義していると仮定した場合、ここではその方法を説明します。

select 
     `ACTUAL_TIME`, 
     `ACTUAL_DAY`, 
     `EXAMINED_AIRPORT_CODE`, 
     `EXAMINED_AIRPORT_AIRPORT`,  
     `EXAMINED_AIRPORT_COUNTRY`, 
     `ARRIVALS/DEPARTURES`, 
     `SCHEDULED_TIME`, 
     `FLIGHT`, 
     `FROM`, 
     `AIRLANE`, 
     `AIRCRAFT`, 
     `STATUS`, 
     `FLIGHT_ID_1`, 
     `FLIGHT_ID_2`, 
     `UPLOAD_TIME` 
    from OSSZES as a 
    left join (
     select 
     `ACTUAL_TIME` 
     `ACTUAL_DAY`, 
     COALESCE(`EXAMINED_AIRPORT_CODE`, '') as EXAMINED_AIRPORT_CODE -- edit 
     `EXAMINED_AIRPORT_AIRPORT`, 
     `EXAMINED_AIRPORT_COUNTRY`, 
     `ARRIVALS/DEPARTURES`, 
     `SCHEDULED_TIME`, 
     `FLIGHT`, 
     `FROM`, 
     `AIRLANE`, 
     `AIRCRAFT`, 
     `STATUS`, 
     `FLIGHT_ID_1`, 
     `FLIGHT_ID_2`, 
     `UPLOAD_TIME` 
     from OSSZES_CLEAR 
    ) as b using (`ACTUAL_DAY`,`EXAMINED_AIRPORT_CODE`,`FLIGHT`,`SCHEDULED_TIME`,`STATUS`) 
    where b.EXAMINED_AIRPORT_CODE is null 
    into outfile '/tmp/proba.csv' 
    fields terminated by ';' 
    enclosed by '"' 
    lines terminated by '\n'; 

これでうまくいかない場合は、どのような結果が得られ、どのような結果が得られるかを明確にしてください。

+0

mysql_exceptions.OperationalError:(1054、 "from clause 'の" EXAMINED_AIRPORT_CODE "が不明です) – Harley

+0

これは、私が見る限り、あなたの提供するコードからまっすぐです。あなたはテーブル構造に関するいくつかの情報を提供できますか? –

+0

しかし、私が投稿したものはうまくいきました。あなたのコードはこのエラーメッセージを出します。 – Harley

関連する問題