AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken select count(*) für computed feld? wie angeben?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von idefix2 · begonnen am 10. Jun 2010 · letzter Beitrag vom 11. Jun 2010
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

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

  Alt 10. Jun 2010, 20:52
Datenbank: Firebird • Version: 2.1 • Zugriff über: database workbench
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

Geändert von mkinzler (10. Jun 2010 um 20:53 Uhr) Grund: SQL-Tag gefixt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 10. Jun 2010, 21:02
Versuch mal
SQL-Code:
alter table interpret
  add Titelzahl COMPUTED BY (
         select Count(*) from Musik
         where Musik.IP_id = interpret.id);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#3

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

  Alt 10. Jun 2010, 21:05
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]
Frank Reim

Geändert von mkinzler (10. Jun 2010 um 21:10 Uhr) Grund: SQL-Tag eingefügt
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

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

  Alt 10. Jun 2010, 21:25
Danke, so geht es.

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

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

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

  Alt 10. Jun 2010, 22:43
Leider zu früh gefreut.

Das Erstellen des Feldes ist zwar erfolgt, aber es berechnet mir generell nur 0
Miniaturansicht angehängter Grafiken
computed.png  
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 11. Jun 2010, 11:00
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
Miniaturansicht angehängter Grafiken
cc.jpg  
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

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

  Alt 11. Jun 2010, 11:24
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)
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.

Geändert von mkinzler (11. Jun 2010 um 11:26 Uhr) Grund: CODE-Tag für SQL ergänzt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 11. Jun 2010, 11:29
Zitat:
P.S. Wie setzte ich SQL-BB-Code Tags ? ([SQL][/SQL] geht nicht)
Einfach Tag um =sql ergänzen
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#9

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

  Alt 11. Jun 2010, 17:22
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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