AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

select count()

Ein Thema von jangbu · begonnen am 6. Mai 2013 · letzter Beitrag vom 6. Mai 2013
Antwort Antwort
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#1

select count()

  Alt 6. Mai 2013, 15:45
Datenbank: SQL • Version: 2000 • Zugriff über: ADO
Hallo,

kann mir jemand bei folgender Abfrage helfen:
Bestell-Datensatz besteht u.a. aus den Feldern Artikel_1,Artikel_2,Artikel_3. Ich brauche eine Übersicht wie oft die verschiedenen Artikel bestellt wurden also count(art). Da der gleiche Artikel in jeder der 3 Artikel-Spalten vorkommen kann, verwendet ich eine union-Abfrage, nach der taucht aber jeder Artikel nur einmal auf, d.h. count funktioniert hier nicht?
Miniaturansicht angehängter Grafiken
select-count.png  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

AW: select count()

  Alt 6. Mai 2013, 16:00
Bestell-Datensatz besteht u.a. aus den Feldern Artikel_1,Artikel_2,Artikel_3.
Wenn ich das richtig verstehe, ist deine DB nicht in der 3. NF, das macht das Ganze ein wenig schwierig.

[edit] Vielleicht so (ungetestet)?
SQL-Code:
SELECT
  A.Artikelbezeichnung,
  COUNT(*)
FROM
  Artikel A
  JOIN Bestellungen B ON
    A.ID = B.Artikel_1
    OR
    A.ID = B.Artikel_2
    OR
    A.ID = B.Artikel_3
GROUP BY
  A.Artikelbezeichnung
Das setzt voraus, dass in den Bestellungen die Fremdschlüssel auf die Artikeltabelle hinterlegt sind und jeder Artikel nur einmal je Bestellung vorkommen kann. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 6. Mai 2013 um 16:14 Uhr)
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: select count()

  Alt 6. Mai 2013, 16:34
Deddy,

ja die Daten sind nicht normiert, alle relevanten Informationen befinden sich in einer einzigen Tabelle, jaher benötige ich auch kein join auf eine andere Tabelle.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

AW: select count()

  Alt 6. Mai 2013, 16:41
Ich habe mir Dein Statement noch einmal angeschaut. Klappt das, wenn Du UNION ALL verwendest? IIRC filtert UNION Doppler heraus, das ist ja nicht das, was Du willst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: select count()

  Alt 6. Mai 2013, 16:43
Deddy,

ja die Daten sind nicht normiert, alle relevanten Informationen befinden sich in einer einzigen Tabelle, jaher benötige ich auch kein join auf eine andere Tabelle.
Hört sich für mich an wie:
"Ja ich hab einen Tankwagen als Anhänger, dann muß ich auch nicht zu einer Tankstelle fahren".


Wie wäre es hiermit:
Code:
select art,count(reckey) as cnt from
(
select art_1 art,art_1 reckkey from bestg where datum>='28.03.2013'
union
select art_2 art,art_1 reckkey from bestg where datum>='28.03.2013'
union
select art_3 art,art_1 reckkey from bestg where datum>='28.03.2013'
)
group by art
order by art
um reckey zu belegen wäre eine Datensatz_ID natürlich am besten geeignet.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 6. Mai 2013 um 16:51 Uhr)
  Mit Zitat antworten Zitat
jangbu

Registriert seit: 6. Apr 2006
171 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: select count()

  Alt 6. Mai 2013, 16:46
genau das wars, mit union all bekomme ich die korrekte Anzahl wie oft die einzelnen Artikel verwendet werden, egal in welcher der 3 möglichen Spalten sie auftauchen.

Danke DeddyH
  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 05:04 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