Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Abfrage und Ausgabe von Inhalten mehrere Tabellen einer DB

Frage Entwicklung Datenbanken

Mitglied: Murphy79

Murphy79 (Level 1) - Jetzt verbinden

27.04.2009, aktualisiert 16:48 Uhr, 4237 Aufrufe, 8 Kommentare

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??????
Mitglied: Biber
27.04.2009 um 17:16 Uhr
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
Bitte warten ..
Mitglied: pulse
27.04.2009 um 17:25 Uhr
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.
01.
Select * FROM Kunden INNER JOIN Adresse ON Adresse.KID = Kunden.KID INNER JOIN Vertraege ON Vertraege.KID = Kunden.KID;
KID steht für KundenID
Bitte warten ..
Mitglied: Murphy79
28.04.2009 um 14:14 Uhr
Also wir nutzen einen 2000er sql server.
Ich greife auf den server mit dem sql enterprise manager zu.Dortkann ich dann die tabellen anzeigen lassen und auch abfrage machen.

verstehe das mit dem join nicht so gut.

Bitte genauer.

Ich habe die DB "m3" so heisst die.
Dann darin die tabellen TMAdressen_vetrag, TMAdressen und TMVetrag_Art
Alle diese Tabellen enthalten einen Wert= nummer.

dieser ist bei allen vorhanden.

Jetzt will ich bestimmte spalten jeder einzelnen tabelle abfragen.

es soll nachher rauskommen:

tabelle mit am anfang der kundennummer dann den dazugehörigen adressdaten und der vrtragsart. in jeder zeiel ein datensatz bestehende aus diesen infos welche ja aus allen tabellen stammen zusammengebaut.
Bitte warten ..
Mitglied: Logan000
28.04.2009 um 15:54 Uhr
Moin Moin

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.

01.
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.
Bitte warten ..
Mitglied: Murphy79
04.05.2009 um 09:26 Uhr
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
Bitte warten ..
Mitglied: Biber
04.05.2009 um 10:04 Uhr
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

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]
01.
Select *  
02.
From (TMAdressen_vetrag  
03.
Inner Join TMAdressen on TMAdressen_vetrag.nummer = TMAdressen.nummer)  
04.
Inner Join TMVetrag_Art on TMAdressen_vetrag.nummer = TMVetrag_Art.nummer
doch einfach nur die Felder, die Du haben willst
01.
Select V.nummer, A.name, A.vorname, A.plz, VA.whatever  
02.
From (TMAdressen_vetrag V 
03.
Inner Join TMAdressen A on V.nummer = A.nummer)  
04.
Inner Join TMVetrag_Art VA on VA.nummer = A.nummer 
05.
ORDER by v.nummer
-oder-

01.
Select V.nummer, A.name, A.vorname, A.plz, VA.whatever  
02.
From TMAdressen_vetrag V, TMAdressen A , TMVetrag_Art VA 
03.
WHERE  
04.
A.nummer=V.Nummer AND 
05.
VA.nummer = A.nummer 
06.
ORDER by 1
Arbeitest Du eigentlich auf einem Produktivsystem und hast Du auch Insert/Update/Delete-Rechte?
Nur interessehalber...

Grüße
Biber
Bitte warten ..
Mitglied: Murphy79
04.05.2009 um 10:16 Uhr
Ne das ist ein produktivsystem.
Das mit den Spaltendie ich brauche ist ja schn ok, aber das Problem ist das ich noch nicht weiß was ich wirklich alles davon brauche.Mein Chef will einfach erstmal alle infos zusammen haben in einer excel liste.Dann soll die liste bearbeitet werden, dubletten raus usw.

Ich kann die Excel liste abe rnicht machen wenn ich da spalten habe die den gleichen namen besitzen. Gibt es nicht einen befehl bei der abfrage der besagt nimm alles also select * außer die spalte nummer???

Ich will doch nur alle infos zu jedem einzelnen kunden abrufen die ich kriegen kann.

da ja in jeder tabell edie kundennummer steht muss es doch möglich sein, eine neue tabelle zu generieren wo alles drinsteht abhängig von der kundennummer.
Ohne einfach nur alle tabellen hintereinander zu schreiben mit allen Feldern (hier jetzt jeweils auch die Kundennummer)

So lässt dich die view nicht speichern
Bitte warten ..
Mitglied: Biber
04.05.2009 um 10:41 Uhr
Moin Murphy79,

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
01.
 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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...