![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Tabelle vergleichen / Left Join bringt zu viele Spalten
Hallo Zusammen,
ich prüfe zwei Tabellen gegeneinander und schreibe die Unterschiede in eine dritte Tabelle. Das Prüfen klappte eigentlich ganz gut, ich bekomme die richtigen Datensätze angezeigt. Ich nutze diese Vorgehensweise auch, um unterschiedlich aufgebaute Tabellen anhand von zwei Feldern zu vergleichen. Auch das klappt eigentlich... Mein Problem ist nur, dass mir dann die Spalten beider Tabellen ausgegeben werden und nicht nur die der Tabelle, die im select-statement steht.
Delphi-Quellcode:
Ich bekomme die Spalten von der Tabelle kommentfa (hier stehen auch Werte in den Feldern) und die Spalten von Tabelle as400temp (hier sind logischer Werte alle NULL).
select * from kommentfa a
left join as400temp t on a.waaunr=t.waaunr and a.waaupo=t.waaupo where t.waaunr is null Kann mir jemand einen Tip geben, wie ich nur die Spalten von kommentfa bekomme? Ich möchte das Ganze nämlich mit einem INSERT verknüpfen.
Delphi-Quellcode:
Aktuell bekomme ich logischer Weise die Fehlermeldung: Column count doesn't match value count at row 1
insert into kommentfaarchiev
select * from kommentfa a left join as400temp t on a.waaunr=t.waaunr and a.waaupo=t.waaupo where t.waaunr is null Ich könnte natürlich statt
Delphi-Quellcode:
die einzelnen Felder auflisten. Aber ich muss das mit einigen großen Tabellen machen und müsste bei Änderungen noch auf eine weitere Procedure achten, deshalb bin ich froh, wenn ich das * behalten darf.
select * from
Hat jemand eine Idee? Vielen Dank Patrick |
AW: Tabelle vergleichen / Left Join bringt zu viele Werte
SQL-Code:
SELECT a.* FROM...
|
AW: Tabelle vergleichen / Left Join bringt zu viele Werte
Zitat:
SQL-Code:
insert into kommentfaarchiev (benötigte Spalten)
select benötigteSpalten from kommentfa a left join as400temp t on a.waaunr = t.waaunr and a.waaupo = t.waaupo where t.waaunr is null |
AW: Tabelle vergleichen / Left Join bringt zu viele Werte
Zitat:
Vielen Dank Patrick |
AW: Tabelle vergleichen / Left Join bringt zu viele Spalten
Also ich bin ja ein großer Freund von "Select *", das betrifft aber die Arbeit mit Bibliotheken, die damit auch umgehen können.
Dass Dir die * Dynamik nichts nutzt, wenn der Rest (gerade bei einem Insert) nicht damit klar kommt, wurde ja schon erwähnt. In der Situation "Och Menno, ich möchte nicht immer soviel tippen (und wer hat sich diese besch.. Spaltennamen eigentlich ausgedacht?!" (400 ++ Spalten oder was weiß ich), die ja offenbar trotz allen IDE Zaubers oft ein Problem darstellt*, nehme ich immer die Dictionary Views der Datenbank, um die Select Clause abzufragen. Also für mySQL:
Code:
Das ist nicht meine Erfindung, sondern glaub ich sehr verbreitet, Code Generierung allgemein ist ja recht praktisch.
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_name' Wenn man mag, kann man sich gleich noch das Komma ausgeben lassen. Oder bei mySQL meinetwegen auch noch diesen ganzen Mist mit Ticks oder Backticks anheften. Man kann es auch einmal für alle Tabellen laufen lassen und sich das Ergebnis in Excel eintüten. Dann bequem nach Tabellen filtern (per Klick), was man braucht. Da besteht allerdings Veraltungsgefahr, aber Excel kann ja auch dynamisch DB-Daten anzeigen. Copy/Paste ist jedenfalls unschlagbar gegen simple Tippfehler und spart auch Zeit, wenn es nicht nur um 5 Felder geht. *gibt es nicht seit längerem einen DB Explorer in der IDE? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz