2017-11-17 2 views
0

Ich möchte analog 2 Tabellen, diese 2 Tabellen sind die gleichen, aber ich bekomme alle Daten, wenn ich meine Abfrage ausführen. Warum?Warum bekomme ich Daten mit nicht vorhanden, wenn meine 2 Tabellen gleich sind? (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() 

Antwort

0

Es ist ein wenig unklar, was Sie versuchen zu tun. Angenommen, Sie möchten alle Datensätze aus Tabelle a, für die in Tabelle b kein entsprechender Datensatz vorhanden ist, und Ihre Logik in der Unterabfrage definiert eine ordnungsgemäße Verknüpfung. So würde ich dies tun.

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'; 

Wenn das nicht funktioniert, bitte klären Sie, welches Ergebnis Sie erhalten und welches Ergebnis Sie erwarten.

+0

Ich bekomme diese Fehlermeldung: mysql_exceptions.OperationalError: (1054, "Unbekannte Spalte 'EXAMINED_AIRPORT_CODE' in 'von Klausel'") – Harley

+0

Das ist direkt von Ihrem mitgelieferten Code, soweit ich sehen kann. Können Sie Informationen zur Tabellenstruktur liefern? –

+0

Aber was ich gepostet habe, hat funktioniert. Dein Code gibt diese Fehlermeldung aus. – Harley

Verwandte Themen