![]() |
Verschachtelte SQL-Anweisung
Hallo,
angenommen ich habe eine Tebelle mit folgenden Spalten: Nummer (Typ integer) Anzahl (Typ integer) In der Spalte Nummer stehen beliebige Zahlen. 1, 3, 2, 3, 5, 6, 6, 22 etc. Die gesuchte SQL-Anweisung soll jetzt folgendes erledigen: Trage in die Spalte Anzahl die Anzahl der gleichlautenden Nummern aus Spalte Nummer ein. Also bei oben genannten Werten sähe die Tabelle danach richtigerweise folgendermaßen aus: Nummer Anzahl 1 1 3 2 2 1 3 2 5 1 6 2 6 2 22 1 Das Ganze mit einem Durchlauf durch die Tabelle und jede einzelne ZEILE mit count(NUMMER) AS ZAEHLER where NUMMER = xxx errechnen und per UPDATE xxx SET ANZAHL = :ZAEHLER eintragen wollte ich absichtlich vermeiden. Ciao Peter |
Re: Verschachtelte SQL-Anweisung
Ich glaube, die Anzahl fest in die Tabelle zu schreiben macht nicht viel Sinn.
Sie würde sich eh ständig ändern. Wenn du die Anzahl der Nummern wissen/darstellen willst machst du es so:
SQL-Code:
SELECT Nummer,Count(Nummer) As Anzahl
FROM Tabelle Group By Nummer |
Re: Verschachtelte SQL-Anweisung
Hi Peter!
Ich würd's ähnlich machen:
SQL-Code:
CREATE TABLE tab (
nummer integer); CREATE INDEX ix_tab ON tab (nummer); CREATE VIEW v_nummer AS SELECT nummer, count(nummer) as anzahl FROM tab GROUP BY nummer; |
Re: Verschachtelte SQL-Anweisung
Wenn Deine DB Subselects erlaubt, könnte folgendes Statement das gewünschte bewerkstelligen:
SQL-Code:
Gruß
Update TabellenName
set TN.Anzahl = TC.Zahl from TabellenName TN inner join ( select Nummer ,count(Nummer) as Zahl from TabellenName group by Nummer) TC on TC.Nummer = TN.Nummer |
Re: Verschachtelte SQL-Anweisung
Zitat:
![]() Zu dem Code habe ich eine Frage : Wieso geht das bei mir so nicht ? 8) |
Re: Verschachtelte SQL-Anweisung
@Hansa
Da muss ich dir leider sagen "keine Ahnung", das muss einfach funktionieren. Count ist eine Agregatfunktion und gibtdie Anzahl aller Einträge in denen eine Nummer steht aus (pro Gruppierung).
Abfrage ergibt:
edit: Sorry, kurz vor Feierabend habe ich deinen Post nicht richtig gelesen. Versuch's mit "Count(*)" und der gleichen Where-clause aus dem Detail-set |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz