2016-04-24 5 views
0
UPDATE CD 
    SET cdNumOfTracks = (
     SELECT COUNT(cdID) 
      FROM Track 
     WHERE Track.cdID = CD.cdID 
     GROUP BY cdID 
     ); 

Die Abfrage oben ich den ‚CDID‘ aus einer Tabelle „Track“ zählen bin mit und haben diese Anzeige der Zählerstände in der „CD“ Tabelle als die Spalte 'cdNumOfTracks'. 'cdID' ist ein Fremdschlüssel in der "Track" -Tabelle und kommt aus der "CD" -Tabelle. Die Abfrage funktioniert gut, aber ich müsste dies manuell ausführen, um die Daten zu aktualisieren.Aktualisierungszählwert ID-Wert in einer Tabelle und Anzeige in der Spalte eines anderen

Ich verwende diese Datenbank als Teil einer Website, die die Daten durch PHP/HTML-Formulare nimmt, also brauche ich das SQL-Backend automatisch zu aktualisieren.

Für diese Arbeit richtig ist, würde ich müssen in der Lage sein, eine Spur hinzuzufügen, es ist ein ‚CDID‘ zu geben und diese dann 1 auf die ‚cdNumOfTracks‘ Spalte hinzufügen würde als eine neue Spur

Antwort

1

hinzugefügt wurde Die Antwort auf Ihre Frage ist, einen Trigger zu verwenden. Sie benötigen (zumindest) einen Trigger für Einfügungen und Löschungen und möglicherweise für Aktualisierungen. Sofern Sie keine sehr große Datenbank haben, würde ich empfehlen, die Anzahl direkt von CD zu erhalten.

Ich möchte etwas notieren. Wegen der group by wird Ihre Abfrage NULL anstelle von 0 zurückgeben, wenn keine Übereinstimmungen vorhanden sind. Im Allgemeinen verwenden korrelierte Unterabfragen keine group by:

Verwandte Themen