SQL - Abfrage mit mehreren gleichen Werten

Hallo,

ich bin, wahrscheinlich wie manch Anderer auch, etwas verzweifelt, da ich ein Problem nicht lösen kann. :confused:

Ich versuche eine Abfrage zu erstellen, in der nur gleiche Werte angezeigt werden, die mehrfach vorhanden sind.

Also, Tabelle a sieht folgendermaßen aus:

KTR44 KTR12 KTR07 KTR08 etc.
1.) Proj-1 101101 101101 001
2.) Proj-1 101101 101101 002
3.) Proj-1 101202 101202
4.) Proj-2 101303 101304 001
5.) Proj-3 101404 101404 001

KTR44 = Projekt
KTR12 = übergeordneter Kostenträger
KTR07 = untergeordneter Kostenträger
KTR08 = Baugruppe des untergeordneten Kostenträgers

Tabelle b
FAK07 = untergeordneter Kostenträger
FAK08 = Baugruppe des untergeordneten Kostenträgers
FAK28 = Bezeichnung des untergeordneten Kostenträgers

KTR07 und KTR08 werden zusammengeführt als KTR07 + ‘-’ + KTR08 AS KTRBGR

Was ich möchte, ist, dass nur die Daten angezeigt werden,
I.) bei denen KTR12 mehr als ein KTRBGR zugewiesen hat und
II.) wenn KTR12 nur ein KTR07 zugewiesen bekommt, aber KTR12 <> KTR07
Also müßten die Zeilen 3 und 5 rausfliegen.

In der Tabelle kann
KTR07 = KTR12 und / oder
KTR08 leer sein.

Ich habe schon diverse Count oder Group by ohne Erfolg ausprobiert. Eigentlich müsste man für I.) nur ein GROUP BY KTR12 having Count (KTR12) > 1, aber da ich die anderen Spalten nicht gruppiere und eine Variable KTRBGR benutze, bekomme ich immer eine Fehlermeldung.

Folgendes statement habe ich probiert, aber durch das GROUP BY bekomme ich nur jeweils 1x KTR07 angezeigt, was aber nicht richtig ist, da unter KTR12 bis zu jeweils 50 gleiche KTR07 mit keiner oder anderen KTR08 vorkommen können.

SELECT KTR44, KTR12, REPLACE(FAK28, ‘"’, ‘’),KTR07
FROM aLEFT OUTER JOIN a ON KTR12 = FAK07
WHERE KTR12 <> ‘’ GROUP BY KTR07, KTR12, FAK28, KTR44
having count (KTR07) = 1
ORDER BY KTR44, KTR12, KTR07

Ich habe KTR12 mit FAK07 gejoint da ich die Bezeichnung für KTR12 aus der Tabelle b brauche.

Also, ich hoffe, ich konnte mein Problem einigermaßen verständlich erläutern und wäre sehr dankbar, wenn mir hierbei jemand helfen könnte!!! :slight_smile:

Nein.

und wäre sehr dankbar, wenn mir hierbei jemand helfen könnte!!! > :slight_smile: > [/size][/font]

Verzichte mal bitte auf Spielereien mit Schriftart und Größe und mehrfache Ausrufezeichen und nutze lieber Code-Blöcke und zeige dort konkret, wie die Tabellen aufgebaut sind. Idealerweise erzeuge Beispieltabellen und Beispieldaten und gebe uns die SQL-Befehle, damit wir via Copy&Paste uns schnell mal die Tabellen bauen können. Und dazu, was Du als Ergebniss erwartest. Dann sehen wir weiter.

Andreas

Verzichte mal bitte auf Spielereien mit Schriftart und Größe und mehrfache Ausrufezeichen und nutze lieber Code-Blöcke und zeige dort konkret, wie die Tabellen aufgebaut sind. Idealerweise erzeuge Beispieltabellen und Beispieldaten und gebe uns die SQL-Befehle, damit wir via Copy&Paste uns schnell mal die Tabellen bauen können. Und dazu, was Du als Ergebniss erwartest. Dann sehen wir weiter.

Andreas[/quote]

Die Tabelle und das SQL-Statement und was ich möchte steht doch drin.



Die Tabelle und das SQL-Statement und was ich möchte steht doch drin.

Nun ja.

KTR44 KTR12 KTR07 KTR08 etc.
1.) Proj-1 101101 101101 001

Was steht in welcher Spalte, welche Spaltentypen, …

Dein Select macht ein:

FROM aLEFT OUTER JOIN a

was so nicht ‘funzt’.

Uns selbst nach 8-maligen Lesen von

Was ich möchte, ist, dass nur die Daten angezeigt werden,
I.) bei denen KTR12 mehr als ein KTRBGR zugewiesen hat und
II.) wenn KTR12 nur ein KTR07 zugewiesen bekommt, aber KTR12 <> KTR07
Also müßten die Zeilen 3 und 5 rausfliegen.

weiß ich nicht, was der Dichter mir damit sagen will. Aber egal, Case closed.


Andreas

So macht es Spaß, dass man als unerfahrener User so tolle Hilfe und so nett formulierte Posts bekommen. War jetzt meine erste Erfahrung mit so einem Forum, aber wenn alle so hilfsbereit sind wie du, dann kann man es echt knicken. So long.

Wenn Du nicht bereit bist, die Informationen so zu präsentieren, dass jemand anders auf anhieb da durchblickt, sondern man sich erst alles selber zusammenbauen und formatieren musst, dann kannst Du keine Hilfe erwarten. Was ist den so schwer daran, den CODE-Tag zu verwenden? Was ist so schwer daran, etwas Übersicht in einen Post zu bringen?

Du, um das mal klarzustellen:

Das ist ein Forum, wo Leute um Hilfe bitten und andere vielleicht helfen können. Unentgeldlich. Ich habe das schon hin und wieder hier getan, also Leuten geholfen.
Und da ich das, wie erwähnt, unentgeldlich mache, gestehe mir bitte das Recht zu, darum zu bitten, daß hilfesuchende ihre Frage so stellen, daß man sie versteht und das Problem nachvollziehen kann. Okay, manchmal rate ich auch und manchmal sogar richtig, aber das klappt halt nicht immer. So z.B. bei Dir. Sorry.

Andreas

Wie gesagt, es ist mein erstes Mal in so einem Forum

SELECT KTR44, KTR12, REPLACE(FAK28, '"', ''),KTR07
[size=100][font=Times New Roman]FROM aLEFT OUTER JOIN a ON KTR12 = FAK07[/font][/size]
[size=100][font=Times New Roman]WHERE KTR12 <> '' GROUP BY KTR07, KTR12, FAK28, KTR44[/font][/size]
[size=100][font=Times New Roman]having count (KTR07) = 1[/font][/size]
[size=100][font=Times New Roman]ORDER BY KTR44, KTR12, KTR07[/font][/size]

ist das so mit dem Code richtig?

Andreas,

das ist alles richtig. Nur bin ich noch nicht mit den ganzen Möglichkeiten vertraut und ich denke der Ton macht die Musik. Ich bin jedem dankbar, der mir hilft, weil ich echt nicht weiter komme.

Jetzt fehlt immer noch der Code wie du deine Tabelle(n) erstellst.

Im Prinzip ja, nur bitte ohne Fontbefehle etc. Idealerweise einfach psql nutzen und dann mit Copy&Paste von da nach hier. Dann passieren solche Dinge wie “FROM aLEFT OUTER JOIN” wie bei Dir auch nicht.

Wenn Du auf Font-Befehle verzichtest, kommt in den Code-Feldern automatisch eine passende Darstellung zustande.

Andreas

Hallo,

meist du das hier?

Hier noch die Codes:

select-Statement:

 [size=84][color=#0000ff]SELECT[/color][/size][size=84] KTR44[/size][size=84][color=#808080],[/color][/size][size=84] KTR12[/size][size=84][color=#808080],[/color][/size][size=84][color=#ff00ff]REPLACE[/color][/size][size=84][color=#808080]([/color][/size][size=84]FAK28[/size][size=84][color=#808080],[/color][/size][size=84][color=#ff0000]'"'[/color][/size][size=84][color=#808080],[/color][/size][size=84][color=#ff0000]''[/color][/size][size=84][color=#808080]),[/color][/size][size=84]KTR07[/size]
[size=84][color=#0000ff]FROM[/color][/size][size=84] tabelle1 [/size][size=84][color=#808080]LEFT[/color][/size][size=84][color=#808080]OUTER[/color][/size][size=84][color=#808080]JOIN[/color][/size][size=84] tabelle2 [/size][size=84][color=#0000ff]ON[/color][/size][size=84] KTR12 [/size][size=84][color=#808080]=[/color][/size][size=84] FAK07[/size]
[size=84][color=#0000ff]WHERE[/color][/size][size=84] KTR12 [/size][size=84][color=#808080]<>[/color][/size][size=84][color=#ff0000]'' [/color][/size]
[size=84][color=#0000ff]GROUP[/color][/size][size=84][color=#0000ff]BY[/color][/size][size=84] KTR07[/size][size=84][color=#808080],[/color][/size][size=84] KTR12[/size][size=84][color=#808080],[/color][/size][size=84] FAK28[/size][size=84][color=#808080],[/color][/size][size=84] KTR44[/size]
[size=84][color=#0000ff]having [/color][/size][size=84][color=#ff00ff]count[/color][/size][size=84][color=#808080]([/color][/size][size=84]KTR07[/size][size=84][color=#808080])>[/color][/size][size=84] 1[/size]
[size=84][color=#0000ff]ORDER[/color][/size][size=84][color=#0000ff]BY[/color][/size][size=84] KTR44[/size][size=84][color=#808080],[/color][/size][size=84] KTR12[/size][size=84][color=#808080],[/color][/size][size=84] KTR07[/size]

Tabelle A

[size=84][color=#0000ff]USE[/color][/size][size=84] [DB1][/size]
[size=84]GO[/size]
[size=84][color=#008000]/****** Object: Table [dbo].[dim_tabelle1] Script Date: 03/06/2009 13:26:04 ******/[/color][/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]ANSI_NULLS[/color][/size][size=84][color=#0000ff]ON[/color][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]QUOTED_IDENTIFIER[/color][/size][size=84][color=#0000ff]ON[/color][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]ANSI_PADDING[/color][/size][size=84][color=#0000ff]ON[/color][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]CREATE[/color][/size][size=84][color=#0000ff]TABLE[/color][/size][size=84] [dbo][/size][size=84][color=#808080].[/color][/size][size=84][dim_tabelle1][/size][size=84][color=#808080]([/color][/size]
[size=84][KTR07] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]14[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL,[/color][/size]
[size=84][KTR08] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]3[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL,[/color][/size]
[size=84][KTR12] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]14[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL,[/color][/size]
[size=84][KTR44] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]14[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL,[/color][/size]
 
[size=84][color=#808080])[/color][/size][size=84][color=#0000ff]ON[/color][/size][size=84] [PRIMARY][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]ANSI_PADDING[/color][/size][size=84][color=#0000ff]OFF[/color][/size]

Tabelle B

[size=84][color=#0000ff]USE[/color][/size][size=84] [DB1][/size]
[size=84]GO[/size]
[size=84][color=#008000]/****** Object: Table [dbo].[dim_tabelle2] Script Date: 03/06/2009 13:28:26 ******/[/color][/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]ANSI_NULLS[/color][/size][size=84][color=#0000ff]ON[/color][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]QUOTED_IDENTIFIER[/color][/size][size=84][color=#0000ff]ON[/color][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]ANSI_PADDING[/color][/size][size=84][color=#0000ff]ON[/color][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]CREATE[/color][/size][size=84][color=#0000ff]TABLE[/color][/size][size=84] [dbo][/size][size=84][color=#808080].[/color][/size][size=84][dim_tabelle2][/size][size=84][color=#808080]([/color][/size]
[size=84][FAK07] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]14[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL,[/color][/size]
[size=84][FAK08] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]3[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL,[/color][/size]
[size=84][FAK28] [varchar][/size][size=84][color=#808080]([/color][/size][size=84]30[/size][size=84][color=#808080])[/color][/size][size=84][color=#808080]NULL[/color][/size]
[size=84][color=#808080])[/color][/size][size=84][color=#0000ff]ON[/color][/size][size=84] [PRIMARY][/size]
[size=84]GO[/size]
[size=84][color=#0000ff]SET[/color][/size][size=84][color=#0000ff]ANSI_PADDING[/color][/size][size=84][color=#0000ff]OFF[/color][/size]

Du bist dir schon darüber im Klaren, dass dises Forum PostgreSQL behandelt, nicht den MS SQL Server?

Geh doch bitte und kaufe Support beim Hersteller deiner Datenbank ein.

Vielen Dank.

Verschoben in den richtigen Bereich…

Vielen Dank!