Datenmerge große Tabelle

Joew0815

Bekanntes Mitglied
Moin ...
ich tue mich noch ziemlich schwer mit Joins ... ich nehm an das es sich heir um einen Join handel :{

Ich habe eine Tabelle mit ziemlich vielen Spalten (ca. 250) in die ich per Excel Daten importiere.
Sagen wir nun beispielhaft, ein Datensatz besteht eigentlich aus zwei Teilen, die aber aus unterschiedlichen Files in eben dieses Taballe geladen werde, jedoch beim import nicht gemerged werden.

Dies soll nun bei der Abfrage passieren:

Die Import-Tabelle : Eig1, Eig2, Eig3, Eig4, Eig5, Eig6

Datensatz aus ExcelFile1 hat: Eig1, Eig2, Eig3
Datensatz aus ExcelFile2 hat: Eig4, Eig5, Eig6

Diese sollen nun per select zusammengefügt werden ...
Da es aber so viele Spalten in der Tabelle gibt, wollte ich frage ob es umgehbar ist die Eigenschaften namelich referenzieren zu müssen.
Falls nicht. Wie mache ich dann den select, dass ich nach der Abfrage ein Ergebnis mit den Eig. 1-6 habe!??

konnte ich mich verständlich ausdrücken?
danke und schöen gruß
 
Also ein Join wird nicht auf eine Tabelle angewendet, sondern auf mindestens zwei.

Ist es richtig, das Du nur eine Tabelle hast, mit ca. 250 Spalten? Das spricht für ein wenig gutes Design, um es mal neutral auszudrücken.

Mit welcher Datenbank arbeitest Du bzw. aus welcher Datenbank sollen die Daten exportiert werden?
 
Zuletzt bearbeitet:
Ich habe eine Tabelle mit ziemlich vielen Spalten (ca. 250)

Echt?

Ich zwinge zwar niemanden dazu eine DB in die dritte Normalform zu "pressen" und kenne auch dein Datenmodell nicht.

Aber die schiere Anzahl lässt mich vermuten, das da viele Abhängigkeiten vorhanden sind und besser in separaten Tabellen aufgehoben wären.

Dann würde wohl auch ein Join Sinn machen. Aber leider sind deine Infos hier etwas spärlich.

Wie mache ich dann den select, dass ich nach der Abfrage ein Ergebnis mit den Eig. 1-6 habe!??
Und deswegen kann man hier nur "global" antworten

SQL:
select Eig1, Eig2, Eig3, Eig4, Eig5, Eig6 from tabelle;
 
Ich kann mich nur anschließen, 250 Spalten sind schon ne Menge.

Da es aber so viele Spalten in der Tabelle gibt, wollte ich frage ob es umgehbar ist die Eigenschaften namelich referenzieren zu müssen.

SQL:
SELECT * FROM tabelle;

Falls du alle 250 Spalten ausgeben willst.
 
Select * mag aus diversen Gründen nicht optimal sein , aber sicher nicht wegen Inkonsistentz 🙂 250 Spalten? Ehrlich ? Das würd ich gern sehen. Hat da jemand Zeilen als Spalten abgebildet ? 😀
 
Select * ist böse, sehr sogar. Damit erzeugst du nur Inkonsistenten. Normalisiere die Tabelle!

Bitte um Aufklärung.. würde mich doch sehr wundern, wenn ein reines Lesen von Daten Schäden anrichten könnte.

SQL:
SELECT *
geht vielleicht auf die Performance der Datenbank oder des Netzwerks aber mehr auch nicht.
 
SELECT * ist deswegen "böse", weil du halt ALLE Spalten liest, aber nicht weißt in welcher Reihenfolge sie kommen.

Das KANN zu Problemen führen, wenn der Code beispielsweise davon ausgeht, das Spalte 4 immer der Name ist, nun aber in Spalte 4 der Preis steht. In welcher Reihenfolge die Attribute zurückgegeben werden ist nicht definiert. Über den Namen die Spalte zu selektieren, kann je nach DB ebenfalls ein Problem sein, da langsamer.

Und natürlich ist es problematisch, wenn jemand mehrere Spalten zur Tabelle hinzufügt, du die per select ausliest, mit den Daten aber gar nichts anfängst, weil du damit nicht gerechnet hast, das plötzlich mehr Spalten als erwartet kommen.

Daher ist es besser zu schreiben
SQL:
select name, preis from...
 
Moin moin
nu sach ich auch mal wieder was dazu: back to di topic!

Ouote: Turtle
SELECT Eig1, Eig2, Eig3, Eig4, Eig5, Eig6 FROM tabelle;

Wie eingangs geschrieben habe, existieren hier exemplarisch ZWEI Datensätze von dem einer die Eigenschaften 1 bis 3 enthält und ein zweiter die Eigenschaften 4-6.
Mit deinem SELECT ist eine Kombination der Ergebnismengen von Datensatz 1 und 2 auf eine Ergebniszeile wohl nicht möglich!
 
Zuletzt bearbeitet:
Wie eingangs geschrieben habe, existieren hier exemplarisch ZWEI Datensätze von dem einer die Eigenschaften 1 bis 3 enthält und ein zweiter die Eigenschaften 4-6.
woher weisst du denn, das eine Zeile mit Eig1, Eig2, Eig3 GENAU zu einer Zeile mit Eig4, Eig5, Eig6 gehört.

Beim Select bekommst du doch zurück (Beispiel).
Eig1, Eig2, Eig3 Eig4, Eig5, Eig6
  1. 4, 'Turtle', 'Montag', null, null, null
  2. null,null,null, 27, 'Maja', 'Dienstag'
  3. 4, 'Turtle', 'Montag', 72, 'Willi', 'Sonntag'
  4. null, null, 'null, 72, 'Willi', 'Sonntag'

Woher weisst du das Zeile1 zu Zeile 2 gehört und nicht zum Beispiel 1+4?
 
das weiß ich z.B. über eine ID, bzw zwei ID Felder

  1. 4, 'Turtle', 'Montag', null, null, null, null, 'part1-1234'
  2. null,null,null, 27, 'Maja', 'Dienstag', 'part2-1234', null
  3. 4, 'Turtle', 'Montag', 72, 'Willi', 'Sonntag', null, 'part2-5678'
  4. null, null, 'null, 72, 'Willi', 'Sonntag', 'part2-5678', null
 
SQL:
select a.Eig1, a.Eig2, a.Eig3,b.Eig4, b.Eig5, b.Eig6. from tabelle a, tabelle b where b.id=a.id;
 
Eigentlich macht man es so, dass man aus der Excel-Datei ein halbwegs logisches Datenmodell erzeugt. Wenn es in die Datenbank soll, musst Du es normalisieren, also kurz gesagt Redundanzen sparen. Dann schreibst Du ein Importjob, der die Excel einliest und in die DB importiert.
 

Zurück
Oben