Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#6

AW: Query benötigt

  Alt 3. Mai 2024, 10: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