Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   select count(*) für computed feld? wie angeben? (https://www.delphipraxis.net/152092-select-count-%2A-fuer-computed-feld-wie-angeben.html)

idefix2 10. Jun 2010 19:52

Datenbank: Firebird • Version: 2.1 • Zugriff über: database workbench

select count(*) für computed feld? wie angeben?
 
Hallo, ich würde gerne in einer Tabelle ein errechnetes Feld erstellen, das für jeden Datensatz die Anzahl der Datensätze in einer anderen Tabelle, die die id von diesem Datensatz als Fremdschlüssel haben, enthält.

So geht es nicht:

SQL-Code:
alter table interpret
  add Titelzahl COMPUTED
         select Count(*) from Musik
         where Musik.IP_id = interpret.id;
Da kommt die Fehlermeldung:
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 3, column 10
select

mkinzler 10. Jun 2010 20:02

AW: select count(*) für computed feld? wie angeben?
 
Versuch mal
SQL-Code:
alter table interpret
  add Titelzahl COMPUTED BY (
         select Count(*) from Musik
         where Musik.IP_id = interpret.id);

dataspider 10. Jun 2010 20:05

AW: select count(*) für computed feld? wie angeben?
 
Hi,

um ein SubSelect - Statement muss man immer noch die Klammern drumrummachen...

Frank

[EDIT]
also:

SQL-Code:
COMPUTED BY ((select Count(*) from musik
         where musik.ip_id = id));
[/EDIT]

idefix2 10. Jun 2010 20:25

AW: select count(*) für computed feld? wie angeben?
 
Danke, so geht es.

Und er braucht tatsächlich zwei öffnende und zwei schliessende Klammern, mit jeweils nur einer Klammer kommt die gleiche Fehlermeldung.

idefix2 10. Jun 2010 21:43

AW: select count(*) für computed feld? wie angeben?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Leider zu früh gefreut.

Das Erstellen des Feldes ist zwar erfolgt, aber es berechnet mir generell nur 0

dataspider 11. Jun 2010 10:00

AW: select count(*) für computed feld? wie angeben?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von idefix2 (Beitrag 1027978)
Leider zu früh gefreut.

Das Erstellen des Feldes ist zwar erfolgt, aber es berechnet mir generell nur 0

Bei mir gibt es keine Probleme (siehe Anhang). FB Version ist 2.13.

Frank

sniper_w 11. Jun 2010 10:24

AW: select count(*) für computed feld? wie angeben?
 
Zwar bezieht sich das SQL-Kode auf MS-SQL aber dennoch:
Ich würde so ein View erstellen:
SQL-Code:
select * from
   (
      select p.parentId,
      childCount =
      (
         select Count(c.childId)
         from CHILD c
         where p.parentId = c.parentId
      ),
      children =
      STUFF
      (
         (
            select ', ' + convert(varchar(10), c.childId)
            from CHILD c
            where p.parentId = c.parentId              
                                order by c.childId desc
            for xml path('')
         )
         , 1, 2, ''
      )
      from PARENT p
   ) as tmp
where tmp.children is not null

----
P.S. Wie setzte ich SQL-BB-Code Tags ? ([SQL][/SQL] geht nicht)

mkinzler 11. Jun 2010 10:29

AW: select count(*) für computed feld? wie angeben?
 
Zitat:

P.S. Wie setzte ich SQL-BB-Code Tags ? ([SQL][/SQL] geht nicht)
Einfach Tag um =sql ergänzen

idefix2 11. Jun 2010 16:22

AW: select count(*) für computed feld? wie angeben?
 
Danke für den Tipp, vielleicht klappt es mit einer View - Aber firebird unterstützt berechnete Felder (behaupten sie zumindest), und die sollten ja dann auch irgendwie funktionieren. Ich kenne mich da eben noch zu wenig aus, und ich erkenne bei der Definition des berechneten Feldes keinen Fehler - es muss aber doch wohl irgend etwas falsch sein?

Mir geht es hier weniger um einen "Workaround" für das konkrete Problem, sondern ich will lernen, mit man mit dem Ding richtig umgeht - hier eben wie die Definition des berechneten Feldes aussehen müsste, damit es tut, was ich mir vorstelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz