DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: SQL | Thema: SELECT über drei Tabellen | Von: G. Guest ( 02.03.2006 18:01)

Hallo Forum!

Ich habe ein Problem mit einer SQL-Abfrage für eine Datenbank. Bei dem Server handelt es sich um einen SQL Server 2005.
Für mich sind drei Tabellen wichtig. Eine Tabelle stellt ein Kontenbuch mit Transaktionsdaten dar, dann habe ich noch eine Tabelle jeweils für Debitoren und für Kreditoren.
Ich lese nun aus der Kontenbuch-Tabelle die Datensätze aus. Diese Datensätze enthalten ein Attribut das durch eine Nummer die Person angibt zu der diese Transaktion gehört. Diese Kundennummer finde ich entweder in der Tabelle Debitoren wieder oder in der Tabelle Kreditoren.
Mein Ziel ist es nun eben alle Daten aus dem Kontenbuch auszulesen und mir über die Kundennummer den Namen des Kunden zu holen. Und den finde ich wie gesagt entweder in der einen oder anderen Tabelle.
Ich habe das ganze schon mit einem UNION zweier getrennter SELECT-Abfragen hinbekommen aber das ist keine gute Lösung bei der größe der Datenbank und der Eigenschaft das UNION eben sehr langsam ist.
Es muss doch noch eine andere Möglichkeit geben.

Würde mich über Hilfe sehr freuen und schon mal Danke im Voraus.

Hoffe ich habe es nicht zu kompliziert beschrieben



Betreff Von Datum
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>woran erkennst Du ob die KundenID aus der Kreditoren / Debitoren Tabelle kommt oder ist die KundenID im ganzen System eindeutig d.h. die KundenID kann es nur einmal geben.<br><br>Gruß
Ansgar Sommer 02.03.2006 18:58
Re: SELECT über drei Tabellen
also die IDs in der Konten-Tabelle sind fünfstellige Integer Werte zw.B. 50170.<br>Diese Nummer kann in der Tabelle der Kreditoren vorkommen aber auch in der Tabelle der Debitoren. Sprich ich habe...
G. Guest 02.03.2006 19:07
Re: SELECT über drei Tabellen
Hallo Guest,<br>ich Verstehe die Logik nicht so ganz in der Tabelle in dem Kontenbuch muss doch Iregnwie hervorgehen ob die Buchung zu einem Kreditor oder Debitor gehört, wie willst Du denn sonst den...
Ansgar Sommer 02.03.2006 21:11
Re: SELECT über drei Tabellen
In der Tabelle Kontenbuch gibt es eben eine Nummer (Source No_). Diese Nummer gehört zu einem Debitor oder zu einem Kreditor oder auch zu beiden. Über diese Nummer will ich mir den Namen holen.<br>Hier...
G. Guest 03.03.2006 09:40
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>das ganze kannst Du z.B. mit einer SubQuery<br>SELECT ID, ..., ISNULL((SELECT NAME FROM Tabelle-Debitoren WHERE ID = Tabelle-Kontenbuch.ERZEUGERNUMMER), (SELECT NAME FROM...
Ansgar Sommer 03.03.2006 10:34
Re: SELECT über drei Tabellen
Sorry, habe einen Logischen Fehler drin so sollte es richtig sein:<br>SELECT ID, ..., CASE (SELECT COUNT(ID) FROM Tabelle-Debitoren WHERE ID = Tabelle-Kontenbuch.ERZEUGERNUMMER) WHEN 0 THEN<br>(SELECT...
Ansgar Sommer 03.03.2006 10:36
Re: SELECT über drei Tabellen
Danke schon mal für deine Mühe aber ich hab da noch eine Frage zu deiner Abfrage. Der Teil mit WHEN und ELSE stellt doch ein ENTWEDER-ODER da. Was ist aber wenn die ID in der Tabelle-Debitoren UND der...
G. Guest 03.03.2006 10:47
Re: SELECT über drei Tabellen
Hier mal mein Ansatz den ich bisher habe, nicht geschockt sein!<br><br>SELECT [Entsorger AG$Waste Ledger Entry_1].[Source No_] AS [Herkunftsnr.], [Entsorger AG$Customer].Name, <br> ...
G. Guest 03.03.2006 10:53
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>das war eigentlich schon gestern meine Frage bezüglich der doppelten ID's. Die Abfrage ist Jetzt so aufgebaut das die Tabelle-Kreditoren Vorrang hat eine Ander Lösung fällt mir dazu...
Ansgar Sommer 03.03.2006 10:56
Re: SELECT über drei Tabellen
Leider wird die komplette Tabellenlogik so von einem großen ERP-System vorgegeben. Da kann ich also nichts ändern.<br><br>Aber danke trotzdem für deine Mühen.
G. Guest 03.03.2006 11:00
Re: SELECT über drei...
Hallo Guest,<br><br>ich meine mit dem Out Join bekommst Du Hausgemachte Performence Probleme, ich gehe mal davon aus die Debitoren und Kreditoren evtl. einen gemeinsamen ID Schlüssel haben oder kann der...
Ansgar Sommer 03.03.2006 11:10
Re: SELECT über drei...
Ich ziehe jetzt nicht über bestehende Systeme her. Kann nur sagen das es ein großes, bekanntes ERP-System ist.<br>Es ist nicht egal ob die Daten aus der Tabelle Kreditor oder Debitor kommen, da es ja...
G. Guest 03.03.2006 11:21
Re: SELECT über drei...
Hallo Guest,<br><br>ich möchte auch nicht über bestehende System herziehen aber das Problem mit der Logik bleit denn noch.<br>Meinst Du mit doppeltnennungen das beide Namen als der aus den Kreditoren und...
Ansgar Sommer 03.03.2006 11:37
Re: SELECT über...
Genau, es gibt in dem System eben Personen die Debitoren sind und gleichzeitig auch mit ihrer Nummer Kreditoren sein können.<br>Dadurch bekomme und brauche ich hinterher eben auch doppelte Datensätze.
G. Guest 03.03.2006 11:42
Re: SELECT über drei Tabellen
Am besten Du wichst Dir erst einmal einen und dann kannste ja mal vor Deine Tür gehen und Deinen vollgewichsten Schwanz der nächst besten Frau zeigen.
G. Guest 03.03.2006 14:12

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG