schuppsl 0 Geschrieben 12. Mai 2014 Melden Teilen Geschrieben 12. Mai 2014 Hallo liebes Forum, da ich zwar schon einen Anfänger-SQL-Kurs gemacht habe, aber der wohl zu anfängerisch war, suche ich bei Euch etwas Hilfe. Also hier ein Beispiel was ich gerade versuche, mein reales Problem, ist ähnlicher art. Mal angenommen ich bin Webhosting Reseller und kaufe meinen Webspace bei verschiedenen Webhostern ein. Ich möchte nun eine Tabelle als Grunddaten Pflegen in der die Daten des jeweiligen Hosters drinstehen, unter anderem den Speicherplatz den ich einkaufe. Darüber hinaus gibt es Spalten mit dem restlichen Speicherplatz der noch übrig ist. Ändert sich mein eingekauftes Paket, kann ich den Speicherplatz an einer einzigen Stelle ändern. Eine Zweite Tabelle ist die Kundenverwaltung in der u.a. den dem Kunden zugesicherten Speicherplatz gelistet werden. Da die Grunddaten auch wirklich nur Grunddaten sein sollen, stehen die beiden tabellen nicht in Beziehung miteinander. Die Grunddatentabellen könnte so aussehen: ID (PK) Hostername Speicherplatz Speicherplatz Rest Preis ... Die Kundentabelle so: ID (PK) Name, Paket Speicher zugesichert Preis ... Jetzt folgendes: Die Spalte [speicherplatz Rest] soll automatisch den restlichen Wert berechnen aus: Speicherplatz - Summe des zugesicherten Speichers aller Kunden für diesen Hoster. Ich möchte mir eben den übrigen Speicherplatz anzeigen lassen den ich noch habe um zu entscheiden ob ich mehr einkaufen muss oder nicht. Ich habe nun überhaupt keine Ahnung wie ich das machen soll und wie ich da anfangen muss. tSQL- mässig kann ich in der Abfrage SUM(Speicher zugesichert) gruppieren, aber ich da die Grunddatentabelle anspreche...großes Fragezeichen. Wahrscheinlich geht das eh nur über eine Funktion? Danke für die Anfängerhilfe, cuborg Ich habe es nunmal so gelöst, die ID 20261 ist nur fiktiv bzw. die ID des Hosters, damit ich einen Bezug habe: UPDATE Test.dbo.Grunddaten set [Speicherplatz Rest] = (( SELECT Speicherplatz FROM dbo.Grunddaten WHERE ID=20261)- (SELECT SUM(k.Speicherplatz) AS SpeicherGesamt FROM Test.dbo.Kunden k) ) where ID=20261 Ist das so richtig und überhaupt praktikabel? Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 12. Mai 2014 Melden Teilen Geschrieben 12. Mai 2014 Hi Du solltest dir mal Gedanken um das Database-Design machen. Ohne einer Beziehung zw. Grunddaten und Kundendaten macht es keinen Sinn, da dein Kunde ein Speicherplatz von einem Hoster bekommt. Somit verbrauchen deine Kunden den Speicherplatz von unterschiedlichen Hostern (Oder?) Folglich muss in der Kundentabelle eine Referenz zum Hoster existieren. Dann erst kannst du aus der KundenTabelle die Daten pro Hoster summieren ... Grunddaten: Hoster_ID (PK) Hostername Speicherplatz Speicherplatz Rest Preis Kundendaten: Kunden_ID (PK) Name, Paket Hoster_ID Speicher zugesichert Preis Dann kannst du das "Update" mit dem passenden JOIN versehen.. Zitieren Link zu diesem Kommentar
schuppsl 0 Geschrieben 12. Mai 2014 Autor Melden Teilen Geschrieben 12. Mai 2014 Alles klar, vielen Dank! Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 13. Mai 2014 Melden Teilen Geschrieben 13. Mai 2014 Siehst Du die veränderten Namen der verschiedenen ID-Spalten, die Pathomorph erstellt hat? Das erleichtert dir das Leben ungemein. Wenn Du immer nur ID als Namen hast, weißt Du nie welche Tabelle denn gemeint ist. Just my 2 Cents. ;) 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.