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

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?

Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...