AGB  ·  Datenschutz  ·  Impressum  







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

Select erstellen

Ein Thema von Dumpfbacke · begonnen am 28. Dez 2017 · letzter Beitrag vom 28. Dez 2017
Antwort Antwort
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Select erstellen

  Alt 28. Dez 2017, 17:50
Datenbank: Firebrid • Version: 2,5 • Zugriff über: IBX
Hallo Leute,
ich habe ein Problem mit dem erstellen eines Selects.

Als Ergebnis möchte ich die Anzahl der Datensätze aus Tabelle 1 haben Gruppiert dannach ob es in der Tabelle 2 den Status A gibt. In der Tablle 2 kann es ein Datensatz mit dem Status A geben muss jeodch nicht sein. Des weiteren kann es auch sein das es keinen Datensatz in Tabelle 2 gibt.

Ich habe es schon einmla mit einen Left Outer Join versucht was jedoch nicht funktioniert, da in Tabelle 2 der Staus mehrfach vorhanden sein kann.

Beispiel für das von mir gewünschte Ergebnis

count Status
3 <null>
2 A

Die Tabellen sind so aufgebaut (Auf das Minimum hier gekürtzt.
Delphi-Quellcode:
Tabelle1
Zaehler
Auftragsnummer

Tabelle2
Zaehler
Auftragsnummer
Status
Termin
Inhalt der Tabellen
Delphi-Quellcode:
Tabelle1:

Zaehler Auftargsnummer
1 11
2 12
3 13
4 14
5 15

Tabelle 2:
Zaehler Auftragsnummer Status Termin
1 11 A 12.12.2017
2 11 A 13.12.2017
3 12 B 07.12.2017
4 13 A 12.12.2017
Könnt Ihr mir hier bitte helfen ? Ich stehe hier ein wenig auf dem Schlauch.

Tanja
Tanja
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Select erstellen

  Alt 28. Dez 2017, 18:04
Bin mir nicht sicher, ob ich die Aufgabenstellung richtig verstanden habe:
SQL-Code:
select
  -- Wie oft kommt der Status vor,
  -- dabei darf ein mehrfachvorkommender Status zu einer Auftragsnummer nur einmal gezählt werden.
  -- Anzahl gibt also an, wieviele unterschedliche Auftragsnummern zum Status vorkommen.
  count(*) as Anzahl, Status
from (
  -- Kombination aus Auftragsnummer und Status soll eindeutig sein.
  select distinct a.Auftragsnummer, b.Status
  from tabelle1 a
  left join tabelle2 b on a.Auftragsnummer = b.Auftragsnummer
)
group by Status
order by Status;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: Select erstellen

  Alt 28. Dez 2017, 18:06
Kann es gerade nur unter MSSQL probieren, aber da funktioniert auch dies:
SQL-Code:
SELECT COUNT(DISTINCT T1.Auftragsnummer), T2.Status
FROM Tabelle1 T1
LEFT JOIN Tabelle2 T2 ON T1.Auftragsnummer = T2.Auftragsnummer AND T2.STATUS = 'A'
GROUP BY T2.Status
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: Select erstellen

  Alt 28. Dez 2017, 18:12
Firebird kommt mit Count(Distinct spalte) wohl auch klar, damit ist Uwes Lösung kürzer und übersichtlicher.
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Select erstellen

  Alt 28. Dez 2017, 18:55
Hallo Jungs,
ihr seit einfach super hier. Man so einfach kann es sein wenn man weiß wie es geht. Danke für Euer schnelles Antworten hier. Ich dachte schon ich bekomme es niemals hin.

Danke Tanja
Tanja
  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 19:12 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