SQL-Problem mit mehreren Tabellen
-
Folgendes Problem: Mehrere Tabellen in einer Excel-Mappe (Spaltenanzahl je Tabelle unterschiedlich so ca. 30 Spalten, Zeilen z.Z. 3000 (kommt durch die Namensgebung in Excel, dass man sich hier festlegen muss), soll aber mehr werden) sollen via ODBC / RecordSet aus einem MFC-Programm abgefragt werden. Die Tabellen sind nicht über Relationen miteinander verbunden. Somit bieten sich typische WHERE-Abfragen, die zur Reduktion führen, nicht automatisch an. Zur Zeit stehen sie in der SQL-Abfrage einfach mit Komma hintereinander. Also in dem Stil SELECT * FROM Tab1, Tab2, Tab3, ...
Das führt zu einer verheerenden Multiplikation des Ganzen, also 3000*3000*3000*...*3000. Das Programm kompiliert und linkt zwar, steigt dann aber aus mit der Meldung "Zu viele Datenfelder". Wie schafft man es mittels SQL-Abfrage, dass es nur AnzahlTabellen*3000 sind. Ich möchte also die Zeilen "addieren" und nicht "multiplizieren". Geht so etwas?
-
hm,
wenn zwischen den Tabellen keine Beziehungen bestehen,
evtl. mehrere Anfragen?Oder was macht eigentlich ein UNION gleich wieder?
Bin mir jetzt ned ganz sicher, aber der gibt die Tabellen
glaub ich untereinander statt nebeneinander aus.
Also hier unbrauchbar...
-
"Unions combine tables by "adding" them, while joins combine tables by "multiplying" them."
Ich habe UNION zwar bisher nicht wirklich verstanden, aber es klingt gut. Ich werde es morgen in der MFC-Anwendung ausprobieren.
Die Spalten (=Felder) der einzelnen Tabellen sind völlig verschieden und haben nur ein Feld gemeinsam. Es sollen bezüglich dieses Feldes jedoch alle Ergebnisse betrachtet werden (nicht nur gleiche oder ungleiche), nur eben nicht "multipliziert", sondern eben nur additiv.
Vielleicht ist dies auch ein OUTER JOIN ?!
-
Seit wann darf sich Excel eigentlich Datenbank nennen? Bei Access mag ich das gerade so noch hinnehmen. Aber Excel?!?
Demnächst werden hier wohl auch noch Wordtabellen behandelt.Wenn die Tabellen in keinerlei Relation zueinander stehen hast du ein Problem. UNION dürfte keine Lösung sein, da nur Tabellen mit identischer Anzahl Spalten verwendet werden können (zumindest darf dann aus allen Tabellen nur eine identische Anzahl Spalten selektiert werden). JOINs kannst Du gar nicht verwenden, wenn zwischen den Tabellen keine Relation besteht...
-
Man nimmt die Daten, wo sie sind. Überhebliches Gelaber bringt mich nicht weiter. Was ich brauche ist offensichtlich ein UNION JOIN. Kann man das mit anderen Mitteln auch umschreiben, falls die Syntax nicht existiert?