dsnakas 0 Geschrieben 28. August 2013 Melden Teilen Geschrieben 28. August 2013 Hallo zusammen,ich hänge an einem Problem bisher dachte ich das die Lösung recht einfach aussieht...ich habe mich mal wieder getäuscht.Szenario:Tabelle "Basis_C" beinhaltet mehrere Kontakte mit der zugehörigen adresseVorname | Name| PLZ | Strasse | Hausnummer | Status | C_verkaufer_nr|Status sagt aus ob die Hausnummer eine gerade oder ungerade Zahl ist.Tabelle "Zuordnung_P"PLZ | Strasse | von |bis |P_Status| P_verkaufer_id ||von| und |bis| beinhalten die Hausnummer range z.B. 0002 - 0020P_Status sagt aus ob die Hausnummer zuweisung gerade oder ungerade Hausnummer betrifft.d.h. eine verkaufs id kann in einer Straße mehrere Zuweisungen haben. Z.B. gerade hausnummern von 2-20 (status gerade) und ungerade Hausnummern von 21-39 (Status ungerade).Ich dachte ich kann nun via einem Update : update Basis_C set Basis_C.C_verkaufer_nr = ( select Zuordnung_P.P_verkaufer_id from Zuordnung_P, Basis_C where Basis_C.Status = Zuordnung_P.P_status and Basis_C.Strasse = Zuordnung_P.Strasse and Basis_C.PLZ = Zuordnung_P.PLZ and Basis_C.Hausnummer >= Zuordnung_P.VON and Basis_C.Hausnummer <= Zuordnung_P.BIS ) go die verkäufer_nr upzudaten. Leider scheint es so zu sein dass die Update funktion nicht versteht das in einer straße mit der gleichen Hausnummer mehrere Kontakte sein können.Hat einer eine idee wie ich das lösen könnte? Leider haben die 2 Tabellen kein wirkliches join Feld. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 28. August 2013 Melden Teilen Geschrieben 28. August 2013 Szenario: Tabelle "Basis_C" beinhaltet mehrere Kontakte mit der zugehörigen adresse Vorname | Name| PLZ | Strasse | Hausnummer | Status | C_verkaufer_nr| Status sagt aus ob die Hausnummer eine gerade oder ungerade Zahl ist. Wer kommt denn auf so eine Idee diese Information zu pflegen? Das kann man doch auf der Hausnummer ableiten. Wieso willst du den Verkäufer in beiden Tabellen pflegen? Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 28. August 2013 Melden Teilen Geschrieben 28. August 2013 Beim dem Update musst Du sicherstellen, dass beim Select nur ein Ergebnis kommt. Auch wird Basis_C.C_verkaufer_nr dann in allen Zeilen ersetzt, da Du kein Where-Statement benutzt.... Zitieren Link zu diesem Kommentar
dsnakas 0 Geschrieben 28. August 2013 Autor Melden Teilen Geschrieben 28. August 2013 (bearbeitet) Wer kommt denn auf so eine Idee diese Information zu pflegen? Das kann man doch auf der Hausnummer ableiten. Wieso willst du den Verkäufer in beiden Tabellen pflegen? Tabelle Zuordnung ist quasi die Auflistung welcher verkäufer für welche straße zuständig ist. Bzw. beinhalt die hausnummereinteilung der straße für den verkäufer (gerade von - bis und ungerade von bis). Die Tabelle Basis_C ist quasi die Kundendatei. Nun muss ich zu jedem Kontakt den Verkäufer updaten. Beim dem Update musst Du sicherstellen, dass beim Select nur ein Ergebnis kommt. Auch wird Basis_C.C_verkaufer_nr dann in allen Zeilen ersetzt, da Du kein Where-Statement benutzt.... Darum geht es ja. Wie stell ich das sicher? Also in dem Fall. Es gibt halt nunmal mehr Kontakte in einer Straße/Hausnummer. Die Kontakte in der Tabelle Basis_C haben eine eindeutige ID. Kann man die eventuell verwenden? Wenn ja wie? bearbeitet 28. August 2013 von dsnakas Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 28. August 2013 Melden Teilen Geschrieben 28. August 2013 Tabelle Zuordnung ist quasi die Auflistung welcher verkäufer für welche straße zuständig ist. Bzw. beinhalt die hausnummereinteilung der straße für den verkäufer (gerade von - bis und ungerade von bis). Die Tabelle Basis_C ist quasi die Kundendatei. Nun muss ich zu jedem Kontakt den Verkäufer updaten. Ja aber wieso pflegst du Daten doppelt (kann ja Gründe haben) und machst keinen Join bei deinen Abfragen und wieso pflegst du Daten, die sich ableiten lassen? Zitieren Link zu diesem Kommentar
dsnakas 0 Geschrieben 28. August 2013 Autor Melden Teilen Geschrieben 28. August 2013 Ja aber wieso pflegst du Daten doppelt (kann ja Gründe haben) und machst keinen Join bei deinen Abfragen und wieso pflegst du Daten, die sich ableiten lassen? Grob umschrieben kommen die Daten aus 2 verschiedenen Quellen. Ich will quasi ein großes ganzes darausmachen. Zählt das Feld1 = Feld 2 nicht als innerjoin? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 28. August 2013 Melden Teilen Geschrieben 28. August 2013 Lösung ohne Update und doppelte Pflege (wenn gerade = 0 und ungerade = 1 in Tabelle Zuordnung_P): SELECT Z.Verkäufer, B.Vorname, B.Name, B.PLZ, B.Strasse, B.Hausnummer, Z.Von, Z.Bis, B.Hausnummer % 2 AS gerade, Z.geradeFROM dbo.Basis_C AS B INNER JOIN dbo.Zuordnung_P AS Z ON B.PLZ = Z.PLZ AND B.Strasse = Z.Strasse AND B.Hausnummer >= Z.Von AND B.Hausnummer <= Z.Bis AND B.Hausnummer % 2 = Z.gerade Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.