Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

  • Autor

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

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

	)

  • Autor

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.