Jump to content

SQL Tabelle als Grunddaten - berechnung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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..

Geschrieben

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. ;)

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...