Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

komme hier atm nicht weiter :(

In einer Tabelle von uns, soll ich folgende Aufgabe lösen:

In der Liste stehen Rechnungskundennummer Kundennummer Abteilung und Debitorenkonto.

Eine Rechnungskundennummer kann mehrere Kunden + Debitorenkontonummern haben, muss sie aber nicht.

Aufgabe: Alle Spalten anzeigen, wo nur die Rechnungskundennummern vorkommen, die mehrere Kundennummern usw. haben.

Bisherige Lösung:

Verdichten, in eine seperate Tabelle ausgeben, Join = fertig.

Das soll jetzt allerdings alles in einer Abfrage geregelt werden.

Hab leider keinen Plan wie ich das anstellen soll....

Bisherige Lösungsansätze:

SELECT dt2.fir, dt2.REKD, dt2.KDNR, dt2.ABTL, dt2.DBKT 

FROM usr/tekda dt2                                  

WHERE EXISTS ( SELECT kda.FIR, kda.REKD                

                      FROM usr/tekda kda            

                      WHERE EXISTS                     

             ( SELECT dt1.fir, dt1.rekd, count(*)      

                      FROM usr/tekda  dt1           

                      WHERE dt1.fir  = kda.fir         

                      AND   dt1.REKD = kda.REKD        

                      GROUP by dt1.fir, dt1.rekd       

                      HAVING count(*) <> 1 ))          

Liefert leider alle Werte zurück. Sämtliche weitere Versuche führen zu syntaktischen Problemen usw.

Wäre schön wenn mir hier jemand die Lösung verraten könnte.

Mfg

Fraggla

Geschrieben (bearbeitet)
Bisherige Lösungsansätze:

SELECT dt2.fir, dt2.REKD, dt2.KDNR, dt2.ABTL, dt2.DBKT -> *

FROM usr/tekda dt2

WHERE EXISTS ( SELECT kda.FIR, kda.REKD

FROM usr/tekda kda

WHERE EXISTS

( SELECT dt1.fir, dt1.rekd, count(*)

FROM usr/tekda dt1

WHERE dt1.fir = kda.fir -> Ist ein und die selbe Tabelle

AND dt1.REKD = kda.REKD -> siehe oben

GROUP by dt1.fir, dt1.rekd

HAVING count(*) <> 1 )) -> Das es mehrere sein sollen, reicht >1

Das wird also zu:

SELECT fir, rekd FROM usr/tekda Group by fir, rekd HAVING count(*) > 1

* so nicht möglich.

Bearbeitet von FISI from Hell
Geschrieben

Nope sorry, funzt so nicht.

Ich poste mal zum Verständnis den ungewünschten Lösungsweg über 3 Abfragen:

1. Verdichtung, damit gezählt werden kann:

SELECT FIR, REKD, DBKT

FROM usr/tekda kda

GROUP by FIR, REKD, DBKT

order by FIR, REKD, DBKT

wird in tekdas1 gespeichert

einschränken auf mehrere werte:

select fir, rekd, count(*)

from usr/tekdas1

GROUP by fir, rekd

having count(*) <> 1

ORDER by fir, rekd

Und schließlich die Fertigstellung

SELECT kda.FIR, kda.REKD, kda.KDNR, kda.ABTL, kda.DBKT

FROM usr/tekda kda

right outer join usr/jointest tes

on kda.FIR = tes.FIR

and kda.REKD = tes.REKD

Geschrieben

Da wir die ganzen Details ja gerade schon im Chat geklärt hatten, probier es mal mit folgendem:


SELECT FIR, REKD, KDNR, ABTL, DBKT 

FROM usr/tekda 

WHERE REKD IN(

	SELECT REKD 

	FROM usr/tekda 

	GROUP BY REKD 

	HAVING count(KDNR) > 1 

		OR count(DBKT) > 1

	)

Geschrieben

Musterlösung:

WITH KDA as (SELECT fir, rekd, dbkt from usr/tekda

GROUP by fir, rekd, dbkt

ORDER by fir, rekd, dbkt) ,

KD1 as (SELECT fir, rekd, count(*) Anz_Deb from KDA

GROUP by fir, kda.rekd

HAVING count(*) <> 1

ORDER by fir, kda.rekd)

SELECT kd2.fir, kd2.rekd, kd2.kdnr, kd2.abtl, kd2.dbkt

FROM KD1, USR/TEKDA kd2

where kd1.fir = kd2.fir

and kd1.rekd = kd2.rekd

ORDER by kd2.fir, kd2.rekd, kd2.kdnr, kd2.abtl, kd2.dbkt

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...