SQL Inhalte aus zwei Tabellen kombinieren

Schnipp

Lt. Commander
Registriert
Feb. 2004
Beiträge
1.138
Hallo zusammen,

ich stehe mir gerade ein wenig auf dem Schlauch: ich habe zwei SQL-Tabellen. In Tabelle 1 stehen jede Menge Daten drin, Tabelle 2 besteht quasi nur aus einer Spalte, in der ein Code drin steht (varchar). Ich möchte nun die Tabellen so verknüpfen, dass mir alle Inhalte aus Tabelle 1 angezeigt werden und in jeder Zeile zudem noch ein Code aus Tabelle 2, wobei jeder Code nur einmal genutzt werden soll.

Irgendwie bekomme ich gerade nicht das Ergebnis, was ich mir vorstelle, bin daher für jede Hilfe dankbar.


Gruß Schnipp
 
Um zwei Tabellen zu kombinieren, müssen wie schon gesagt bei Tabellen eine Beziehung zueinander haben.

Beispiel:

Tabelle1 ID Name Adresse usw.

Tabelle2 ID Telefonnummer ID_Tabelle1

Jetzt kannst du quasi mit einer Abfrage beide Verknüpfen kleinere Abfragen müssen nicht unbedingt mit einen Join gelöst werden es reich auch WHERE

Version1:
Code:
SELECT a.Name, a.Adresse,b.Telefonnummer FROM Tabelle1 a, Tabelle2 b WHERE a.ID = b.ID_TABELLE1
Version 2:
Code:
SELECT a.Name, a.Adresse,b.Telefonnummer FROM Tabelle1 a INNER JOIN Tabelle2 b ON b.ID_TABELLE = a.ID
 
Da die Tabellen mangels Schlüssel in keinerlei Beziehung zueinander stehen, kann man die Tabellen eigentlich nur mit SELECT UNION in ein Resultset drücken.

In etwa so: SELECT * FROM Tabelle1 UNION SELECT * FROM Tabelle2
 
Die Tabellen haben keinerlei Beziehung zueinander. In Tabelle 2 gibt es 2 Spalten, einmal die IDENTITY und dann halt die Spalte mit den Codes.
 
ist zwar von der Performance alles andere als Optimal, aber eine Lösung....


ein CrossJoin mit einer N:N-Beziehung erzeugen (also quasi ohne Join-Kriterium),

und dann, um eindeutige Datensätze zu erhalten mit einem Distinct , oder Group by wieder eindeutig machen ...



Select distinctrow [Spalten aus TAB_A] , [ CODE AUS TAB_B]


from TAB_A , TAB_B




oder:



Select [Spalten aus TAB_A] , [ CODE AUS TAB_B]

from TAB_A , TAB_B

group by [Spalten aus TAB_A]
Ergänzung ()

DocWindows schrieb:
Da die Tabellen mangels Schlüssel in keinerlei Beziehung zueinander stehen, kann man die Tabellen eigentlich nur mit SELECT UNION in ein Resultset drücken.

In etwa so: SELECT * FROM Tabelle1 UNION SELECT * FROM Tabelle2




Ein Union dürfte SO NICHT funktionieren, da die Anzahl Spalten unterschiedlich sind, und mit dem Union die Tabellen quasi nacheinander verkettet würden
 
Also wenn es dir wirklich ernst ist dann solltest du dir wirklich Gedanken machen in die zweite Tabelle ein Verweis zur ersten einzupflegen.

Alles andere wird ziemlich bescheiden laufen.
 
Ich hab die Tabellen jetzt auch entsprechend angepasst, dass ich einen Verweis machen kann. Den Weg kenne ich wenigstens auch ;-)

Danke an alle für das kurz Brainstorming!
 
Kein Problem. Als kleinen Tipp und ohne oberlehrerhaft zu sein, mir hilft es immer die Tabellen grafisch (Visio, oder zeichnen Oldschool per Hand ^^) darzustellen dadurch habe ich schon manche Fehler vermieden :)
 
Zurück
Oben