Forum: Datenbanken
by Delphi.Narium,
10. Apr 2024
Deshalb schrieb ich ja später auch
Das ist eine Abwandlung/Weiterentwicklung der von der KI weiter oben gelieferten Antwort oder hat zumindest große Ähnlichkeit mit ihr. Sie hat den Vorteil, dass sie ohne Case und Sum auskommt und sie ist dadurch deutlich eleganter und lesbarer (und vermutlich bei größeren Datenmengen auch schneller).
Das war für mich auch das Hauptproblem erstmal Testdaten...
Forum: Datenbanken
by Delphi.Narium,
10. Apr 2024
Da es mir keine Ruhe lässt, eine Lösung ohne Subselect zu finden, hab' ich mal den ChatBot meiner Wahl befragt, diese Lösung wurde extrem schnell geliefert:
SELECT k.*
FROM Kunden k
WHERE EXISTS (
SELECT 1
FROM Rechnungen r
JOIN Positionen p ON r.ReNr = p.ReNr
Forum: Datenbanken
by Delphi.Narium,
10. Apr 2024
Aber damit ist die Vermutung widerlegt:
'ne weitere Alternative, auch mit 'nem Subselect:
create table Kunden (
KdNr int,
Name varchar(255)
);
create table Rechnungen (
Forum: Datenbanken
by Delphi.Narium,
8. Apr 2024
Noch ein Versuch:
select kdnr
from (
select
kdnr,
Sum(HatX) as HatX, /* Wie oft kommt der Artikel X vor? */
Sum(HatY) as HatY /* Wie oft kommt der Artikel Y vor? */
from (
select
Forum: Datenbanken
by Delphi.Narium,
8. Apr 2024
Syntaktisch sehr altbackene Version:
select k1.*
from kunden k1, rechnungen r1, positionen p1
where k1.kdnr = r1.kdnr
and r1.renr = p1.renr
and p1.artikel = 'X'
and not exists
(
select 1
from kunden k2, rechnungen r2, positionen p2