Snipes83 Geschrieben 20. September 2011 Teilen Geschrieben 20. September 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SystemCC Geschrieben 20. September 2011 Teilen Geschrieben 20. September 2011 Hallo Snipes83, Sry, doch welche DB nehmt ihr her? Oracle? SQL? Access? Sieh Dir doch mal SQL Tutorial an. bzw. SQL SELECT Statement. Vielleicht hilft Dir das weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Snipes83 Geschrieben 20. September 2011 Autor Teilen Geschrieben 20. September 2011 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pixie Geschrieben 20. September 2011 Teilen Geschrieben 20. September 2011 MIt einem normalen und kann das ja nicht funktionieren da ja zeilenweise ausgelesen wird und somit A und B ja niemals zutrifft!? self join? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Snipes83 Geschrieben 20. September 2011 Autor Teilen Geschrieben 20. September 2011 Danke Pixie, du bist mein Held Wieder was dazu gelernt. Klappt einwandfrei Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Snipes83 Geschrieben 21. September 2011 Autor Teilen Geschrieben 21. September 2011 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') Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Snipes83 Geschrieben 21. September 2011 Autor Teilen Geschrieben 21. September 2011 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 29. September 2011 Teilen Geschrieben 29. September 2011 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.