Abfrage und Ausgabe von Inhalten mehrere Tabellen einer DB
Hallo. Ich möchte auf einem SQL Server eine Abfrage über 3 Tabellen einer Datenbank machen.
In jeder Tabelle stehen relevante Daten drinn die ich brauche.
So also: in der ersten steht die nummer also ID des Kunden und die zugehörigen Adressdaten wie PLZ und ort usw, in der zweiten steht die nummer also Id des Kunden und die Art des Kunden und in der dritten steht die nummer und die veträge des kunden.
jetzt will ich eine excel tabelle mit all diesen daten bekommen alle daten hintereinander zugehörg zur kundennummer.
ich brauche also eine abfrage die alles das ausgibt und dann einen export in excel wie geht das??????
In jeder Tabelle stehen relevante Daten drinn die ich brauche.
So also: in der ersten steht die nummer also ID des Kunden und die zugehörigen Adressdaten wie PLZ und ort usw, in der zweiten steht die nummer also Id des Kunden und die Art des Kunden und in der dritten steht die nummer und die veträge des kunden.
jetzt will ich eine excel tabelle mit all diesen daten bekommen alle daten hintereinander zugehörg zur kundennummer.
ich brauche also eine abfrage die alles das ausgibt und dann einen export in excel wie geht das??????
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 114795
Url: https://administrator.de/contentid/114795
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo.
Moin murphy79,Ich möchte auf einem SQL Server
Auf einem bestimmten oder eher allgemein?eine Abfrage über 3 Tabellen einer Datenbank machen.
Auf bestimmte oder eher allgemein?Hast Du evtl auch einen Client, mit dem Du das tun möchtest?
Hast Du eine ODBC-Connection oder ... nein, langsamer..
Wie greifst Du im Moment von Deinem Rechner auf diesen "SQL-Server" zu?
Grüße
Biber
Falls es sich um einen Sql Server 2005 handelt, kannst du das SQL Management Studio Express dafür nehmen.
Da führste dein Select aus und kannst die ergebnisse als CSV speichern.
Deine Abfrage musst du über Joins realisieren.
KID steht für KundenID
Da führste dein Select aus und kannst die ergebnisse als CSV speichern.
Deine Abfrage musst du über Joins realisieren.
Select * FROM Kunden INNER JOIN Adresse ON Adresse.KID = Kunden.KID INNER JOIN Vertraege ON Vertraege.KID = Kunden.KID;
Moin Moin
Bei 3 Tabellen must du halt 2 Joins schachteln.
Heist das Feld jetzt nummer oder kundennummer? Ich nehme einfach zum Bsp. nummer.
Wenn deine Abfrage das gewünschte ergebniss liefert speichert du diese als Sicht (View) ab.
Dann startest du den DTS Assi und wählst diese Sicht als Datenquelle, wählst Excel als Ziel aund auf gehts.
Gruß L.
verstehe das mit dem join nicht so gut.
Das solltest Du in der Onlinhilfe des SQL Server mal nachlesen.Bei 3 Tabellen must du halt 2 Joins schachteln.
Heist das Feld jetzt nummer oder kundennummer? Ich nehme einfach zum Bsp. nummer.
Select * From (TMAdressen_vetrag Inner Join TMAdressen on TMAdressen_vetrag.nummer = TMAdressen.nummer) Inner Join TMVetrag_Art on TMAdressen_vetrag.nummer = TMVetrag_Art.nummer
Wenn deine Abfrage das gewünschte ergebniss liefert speichert du diese als Sicht (View) ab.
Dann startest du den DTS Assi und wählst diese Sicht als Datenquelle, wählst Excel als Ziel aund auf gehts.
Gruß L.
Zitat von @Murphy79:
Das klappt schon gut, aber wenn ich dies so mache, dann hängt der
mir in der view alles hintereinander und somit auch immer wieder eine
Spalte die nummer heisst.So kann ich die view aber nicht speochern da
er nur eine spalte mit nummer haben will und nicht 3 spalten mit diesem namen
Das klappt schon gut, aber wenn ich dies so mache, dann hängt der
mir in der view alles hintereinander und somit auch immer wieder eine
Spalte die nummer heisst.So kann ich die view aber nicht speochern da
er nur eine spalte mit nummer haben will und nicht 3 spalten mit diesem namen
Moin Murphy79,
ich weiss nicht, wie dünnhäutig und belastbar Logan000 an einem handelsüblichen Montagmorgen ist, aber vielleicht ist es besser, wenn ich versuche zu antworten...
Nimm statt alle Felder [Logan000s Skizze]
Select *
From (TMAdressen_vetrag
Inner Join TMAdressen on TMAdressen_vetrag.nummer = TMAdressen.nummer)
Inner Join TMVetrag_Art on TMAdressen_vetrag.nummer = TMVetrag_Art.nummer
doch einfach nur die Felder, die Du haben willst
Select V.nummer, A.name, A.vorname, A.plz, VA.whatever
From (TMAdressen_vetrag V
Inner Join TMAdressen A on V.nummer = A.nummer)
Inner Join TMVetrag_Art VA on VA.nummer = A.nummer
ORDER by v.nummer
-oder-
Select V.nummer, A.name, A.vorname, A.plz, VA.whatever
From TMAdressen_vetrag V, TMAdressen A , TMVetrag_Art VA
WHERE
A.nummer=V.Nummer AND
VA.nummer = A.nummer
ORDER by 1
Arbeitest Du eigentlich auf einem Produktivsystem und hast Du auch Insert/Update/Delete-Rechte?
Nur interessehalber...
Grüße
Biber
Moin Murphy79,
Ich habe Dir schon zugehört/zugelesen.
Aber "alle Infos" heißt doch nicht "alle Felder".
ich habe oben geschrieben "nimm einfach nur die Felder, die Du brauchst".
Und wenn denn nun ein Feld V.Nummer und ein Feld VA.Nummer und ein Feld A.nummer in Deinem JOIN existieren würde, dann zeigt doch nur eines dieser drei an (SELECT V.Nummer, V.bla, V.blubb,...A.whatThe, V.uck")
Und ja, die Felder, die Du holst musst Du einzeln angeben bzw. eintippseln.
Tipp:
Du kannst es vereinfachen, indem Du - wenn meinetwegen "V" die feldreichste der Tabellen ist- schreibst
... also EINE der Tabellen mit einem SELECT [Aliasname].* anziehst.
geht aber nur bei einer, da in allen drei Tabellen ja mindestens ein Feld gleichen Namens ist.
Grüße
Biber
Ne das ist ein produktivsystem.
Das hatte ich irgendwie geahnt.Ich will doch nur alle infos zu jedem einzelnen kunden abrufen die ich kriegen kann.
Jaha.Ich habe Dir schon zugehört/zugelesen.
Aber "alle Infos" heißt doch nicht "alle Felder".
ich habe oben geschrieben "nimm einfach nur die Felder, die Du brauchst".
Und wenn denn nun ein Feld V.Nummer und ein Feld VA.Nummer und ein Feld A.nummer in Deinem JOIN existieren würde, dann zeigt doch nur eines dieser drei an (SELECT V.Nummer, V.bla, V.blubb,...A.whatThe, V.uck")
Und ja, die Felder, die Du holst musst Du einzeln angeben bzw. eintippseln.
Tipp:
Du kannst es vereinfachen, indem Du - wenn meinetwegen "V" die feldreichste der Tabellen ist- schreibst
SELECT V.* , A.Name, A.Vorname, A.Plz, VA.FeldX, VA.FeldY..........
... also EINE der Tabellen mit einem SELECT [Aliasname].* anziehst.
geht aber nur bei einer, da in allen drei Tabellen ja mindestens ein Feld gleichen Namens ist.
Grüße
Biber