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.

Abfrage: ID in einer Tabelle mit unterschiedlichen Kriterien

Empfohlene Antworten

Veröffentlicht

Moin Leute,

ich hab mal wieder ein kleines Problem wo ich gerade nicht weiterkomm.

Unsere Software die wir nutzen hat mehrere Tabellen (Software kommt nicht von uns).

Ich bräuchte eine Abfrage die mir alle IDs listet welche in der Tabelle als Kriterium A und Kriterium B gekennzeichnet sind. Das Problem ist das die DB so wie ich das sehe nicht in der 3ten Normalform angelegt ist. Als Beispiel:

ID Kriterium

123123 A

123123 B

123124 A

123125 C

Wie ihr seht gibt es für die ID 123123 2 Einträge die einmal als "A" gekennzeichnet ist und einmal als "B". Wie löse ich das jetzt das ich als Endergebnis nur:

ID Kriterium

123123 A

123123 B

herausbekomme? MIt einem normalen und kann das ja nicht funktionieren da ja zeilenweise ausgelesen wird und somit A und B ja niemals zutrifft!? Habt ihr nen Lösungsansatz? Ich hoffe ich hab das Problem verständlich erklärt. Danke schonmal!

MFG Snipes83

  • Autor

Hallo,

danke für die Antwort.

Wir nutzen Postgres. Wie man nen Select schreibt ist mir klar und das bekomm ich hin. Jedoch brauche ich ja ne Möglichkeit einer Abfrage die mir alle IDs liefert die in Kriterium A und B drin stehen haben (siehe Tabellenbeschreibung oben)

  • Autor

Moin Moin,

jetzt fiel mir doch noch nen Fehler auf. Und zwar habe ich jetzt für das ganze noch hinzugefügt das ich das Abbrechdatum in bestimmten Kriterien dazu haben will.

Ist die IPROVART = 0, so sollen nur zeilen ausgegeben werden wo das Datum im Jahre 2010 ist und zusätzlich ist IPROVART = 4, so sollen nur zeilen ausgegeben werden wo das Abbrechdatum vor 2010 ist. Das mit dem Datum klappt wunderbar bei IPROVART = 0, sobald ich das ganze aber mit IPROVART = 4 und-verknüpfe (mit dem Datumskriterien) bekomm ich auch Verträge agezeigt wo IPROVAT = 4 und das Datum auch in 2010 liegt.

Kann mal jemand meine Abfrage begutachten und mich ggf. auf nen Fehler aufmerksam machen?

select distinct 

	c1.nvertrag, c1.iprovart, c2.iprovart, k_PERSON.CNAME AS K_NAME, k_PERSON.CVORNAME, 	v_VERTRAG.CPOLNN, 

from 

	firmprov AS c1, 

	firmprov AS c2,

	VERTRAG v_VERTRAG,

	struktur v_struktur,

	KUNDEN k_KUNDEN,

	person k_person

where 

	v_struktur.nbenutzer = 11110000000002

	and v_struktur.nunter = v_vertrag.nmitarb 

	and c1.nvertrag = v_vertrag.nvirtnr 

	and v_vertrag.nkunden = k_kunden.nvirtnr

	and k_person.nvirtnr = k_KUNDEN.nperson

	and(c1.iprovart = 4 and c1.DABRECHDAT >= timestamp '2010-01-01' and        c1.DABRECHDAT <= timestamp '2010-12-31') 

	and (c2.iprovart = 0 and c2.DABRECHDAT <= timestamp '2009-12-31')

 

  • Autor

Ich habe mir jetzt mal c1.Abrechdat und c2.Abrechdat ausgeben lassen.

Bei c1.Abrechdat stimmt alles, jedoch macht er bei c2.Abrechdat jede ID mit jedem Datum was in der Tabelle drin vorkommt. Ich will aber doch nur das Datum vergleichen welches drin steht wo IPROV = 4 ist? Sieht jemand was ich falsche mache?

Stehe grad voll auf dem Schlauch!

  • 2 Wochen später...

da ich nicht verstehe, was du mit dem neuesten Beitrag sagen wolltest, werde ich ihn einfach mal ignorieren...

nach dem, was du im vorletzten Beitrag geschrieben hast, müsste in der Abfragebedingung irgendwas in Richtung

(iprovart = 0 UND datum = 2010) ODER (iprovart = 4 UND abbrech < 2010)

stehen

kann es sein, dass in der Bedingung ein falsches Datum steht und es nicht <= '2010-12-31' sondern <= '2009-12-31' heißen sollte? (ich würde in dem Fall eher < '2010-01-01' verwenden)

am Besten wäre es, wenn du nochmal schreibst, was du jetzt hast und was du eigentlich brauchst

und es wäre eventuell gut zu wissen, was die Felder zu bedeuten haben (sofern du das überhaupt schreiben darfst)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

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.