AGB  ·  Datenschutz  ·  Impressum  







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

Query benötigt

Ein Thema von noisy_master · begonnen am 30. Apr 2024 · letzter Beitrag vom 3. Mai 2024
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.163 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Query benötigt

  Alt 1. Mai 2024, 15:12
Also nochmal zusammengefasst: es sollen die Anzahlen der in Tabelle vorkommenden "Referenzen" auf A zusammengezählt werden, aber nur da, wo valid= True ist.
Sieht mir nach irgendwas mit Select AName,Sum(BAnzahl) from A Left outer Join on A.AName=B.Bname..... oder so aus, bekomme es aber wieder beim besten willen nicht hin

Hat vielleicht irgendwer von euch die zündende Idee?

Wie immer: Danke schon mal vorab für eure Mühe!

Gruß
Für so etwas - auch gerne wenn es komplexer ist - nutze ich mittlerweile 100% Chat-GPT. Da kommt "immer" etwas valides raus, wenn man direkt die Tabellen Namen und Feld Namen mit an gibt. ist der code direkt Copy-Paste...
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
576 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Query benötigt

  Alt 3. Mai 2024, 06:00
Für so etwas - auch gerne wenn es komplexer ist - nutze ich mittlerweile 100% Chat-GPT. Da kommt "immer" etwas valides raus, wenn man direkt die Tabellen Namen und Feld Namen mit an gibt. ist der code direkt Copy-Paste...

Klingt interessant, aber was für eine Frage stellst Du Chat GPT. kannst Du mal ein Beispiel gerne hier an diesem Beispiel geben ? Ich wüsste jetzt nicht wie ich Chat GPT die Tabellen erkläre
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.587 Beiträge
 
Delphi 7 Professional
 
#3

AW: Query benötigt

  Alt 3. Mai 2024, 09:23
Zitat von Frage an KI:
Gegeben seine 2 Tabellen:
Tabelle A mit Feld
AIndex AName
1 test1
2 test3
3 test2
.


und Tabelle B mit
BIndex BName BAnzahl BValid
1 test1 5 True
2 test1 3 False
3 test3 4 True
4 test1 2 True
.

was soll dabei rauskommen:

AName sum(BAnzahl)
test1 7
test3 4
test2 -/NULL/0
.

Also nochmal zusammengefasst: es sollen die Anzahlen der in Tabelle vorkommenden "Referenzen" auf A zusammengezählt werden, aber nur da, wo valid= True ist.
Zitat von Antwort der KI:
Um die gewünschten Ergebnisse zu erzielen, können Sie eine SQL-Abfrage verwenden, die die `JOIN`- und `GROUP BY`-Anweisungen verwendet. Hier ist ein Beispiel, wie Sie es tun können:

```sql
SELECT A.AName, COALESCE(SUM(B.BAnzahl), 0) as Summe
FROM TabelleA A
LEFT JOIN TabelleB B ON A.AName = B.BName AND B.BValid = True
GROUP BY A.AName;
```

In dieser Abfrage wird die `LEFT JOIN`-Anweisung verwendet, um alle Einträge aus `TabelleA` beizubehalten und nur die gültigen Einträge aus `TabelleB` hinzuzufügen. Die `COALESCE`-Funktion stellt sicher, dass, wenn es keine übereinstimmenden Einträge in `TabelleB` gibt (d.h., die Summe ist NULL), stattdessen eine 0 zurückgegeben wird. Die `GROUP BY`-Anweisung wird verwendet, um die Ergebnisse nach `AName` zu gruppieren.

Bitte beachten Sie, dass Sie die Tabellennamen und Feldnamen entsprechend Ihrer Datenbankstruktur anpassen müssen.
Die Frage hab' ich hier per Copy&Paste aus Deinem Eingangspost übernommen.

Sprich: Mit der KI redest Du genauso wie mit uns, vergiss einfach, dass Dir da 'ne Maschine antwortet. Führe eine normale Unterhaltung, wie mit Kolleginnen oder Kollegen, dann kommen die besten Ergebnisse heraus. Versucht man irgendwie KI-konform zu fragen, werden die Ergebnisse nicht besser, eher das Gegenteil. Passt das Ergebnis nicht, einfach normal nachfragen. Es ist erstaunlich, wie gut die Ergebnisse dadurch werden.

Da die BDE Coalesce (meines Wissens) nicht kennt, hab' ich mal nachgefragt:
Zitat von Frage an KI:
Wie muss die Abfrage aussehen, wenn meine Datenbank die Funktion Coalesce nicht kennt?
Zitat von Antwort der KI:
Wenn Ihre Datenbank die `COALESCE`-Funktion nicht unterstützt, können Sie stattdessen die `IFNULL`- oder `ISNULL`-Funktion verwenden, je nachdem, welche Ihre Datenbank unterstützt. Hier ist, wie die Abfrage aussehen könnte:

```sql
SELECT A.AName, IFNULL(SUM(B.BAnzahl), 0) as Summe
FROM TabelleA A
LEFT JOIN TabelleB B ON A.AName = B.BName AND B.BValid = True
GROUP BY A.AName;
```

oder

```sql
SELECT A.AName, ISNULL(SUM(B.BAnzahl), 0) as Summe
FROM TabelleA A
LEFT JOIN TabelleB B ON A.AName = B.BName AND B.BValid = True
GROUP BY A.AName;
```

Bitte beachten Sie, dass Sie die Tabellennamen und Feldnamen entsprechend Ihrer Datenbankstruktur anpassen müssen.

Falls Ihre Datenbank weder `COALESCE`, `IFNULL` noch `ISNULL` unterstützt, könnten Sie eine bedingte `CASE`-Anweisung verwenden, um das gleiche Ergebnis zu erzielen. Hier ist ein Beispiel:

```sql
SELECT A.AName,
CASE WHEN SUM(B.BAnzahl) IS NULL THEN 0 ELSE SUM(B.BAnzahl) END as Summe
FROM TabelleA A
LEFT JOIN TabelleB B ON A.AName = B.BName AND B.BValid = True
GROUP BY A.AName;
```

In dieser Abfrage wird die `CASE`-Anweisung verwendet, um zu überprüfen, ob `SUM(B.BAnzahl)` NULL ist, und wenn ja, wird 0 zurückgegeben, sonst wird der tatsächliche Wert von `SUM(B.BAnzahl)` zurückgegeben.
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
576 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Query benötigt

  Alt 3. Mai 2024, 09:33
Danke total cool. Diese Möglichkeit Beispieltabellen anzulegen kannte ich nicht bzw habe die noch nie genutzt.

Danke
  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 04:57 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