Ankündigung

Einklappen
Keine Ankündigung bisher.

Oracel SQL-Abfrage - Nur geschlossene IDs anzeigen...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Oracel SQL-Abfrage - Nur geschlossene IDs anzeigen...

    Hallo,

    ich habe eine Oracel-Datenbank und suche verzeichelt eine Lösung zu folgendem Probelm:

    ich habe eine Tabelle:

    ID-2014-00181 offen
    ID-2014-00943 abgeschlossen
    ID-2015-00492 abgeschlossen
    ID-2018-00114 offen
    ID-2014-00181 abgeschlossen
    ID-2016-00549 abgeschlossen
    ID-2018-00015 abgeschlossen
    ID-2016-00100 offen
    ID-2014-00943 abgeschlossen
    ID-2014-00181 abgeschlossen
    ID-2018-00497 abgeschlossen


    Nun bin ich auf der Suche nache einer SQL-Anweisung die es mir ermöglicht die ID-Nummern zu zählen die abgeschlossen sind.

    Beispiel die Nr. ID-2014-00181 dürfte nicht angezeit werden, weil sie 2x "geschlossen" ist, aber einmal offen.

    Die ID mit der Nummer ID-2014-00943 müsste angezeit werden, weil sie in keiner Zeile "offen" ist.

    Hast Du einen Tipp für mich?





  • #2
    Wieso können die offen und geschlossen sein? DB-Fehldesign?

    Mal obiges sortiert..

    Code:
    ID-2014-00181    abgeschlossen
    ID-2014-00181    abgeschlossen
    ID-2014-00181    offen
    ID-2014-00943    abgeschlossen
    ID-2014-00943    abgeschlossen
    ID-2015-00492    abgeschlossen
    ID-2016-00100    offen
    ID-2016-00549    abgeschlossen
    ID-2018-00015    abgeschlossen
    ID-2018-00114    offen
    ID-2018-00497    abgeschlossen
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Ok, mein Fehler,

      in den Zeilen sind natürlich weite Infomationen die ich wegen der Übersichtlichkeit nicht mit kopiert habe...

      Kommentar


      • #4
        Was die Frage aber nicht beantwortet. Jede "ID" sollte einen einzigen Stammdatensatz haben, wo die Nummer, der Status, etc.. vorhanden sind und nicht mehr.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Mit anderen Daten und PostgreSQL, kann ORA sicherlich auch in etwa so:

          Code:
          test=*# select * from genx71 ;
           id | geschlossen
          ----+-------------
            1 | t
            2 | f
            1 | f
            2 | t
            3 | t
            4 | f
          (6 rows)
          
          test=*# with foo as (select id, count(distinct geschlossen) as x, count(geschlossen) filter (where geschlossen) as y from genx71  group by id ) select id from foo where x=y;
           id
          ----
            3
          (1 row)
          
          test=*#
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            Was die Frage aber nicht beantwortet. Jede "ID" sollte einen einzigen Stammdatensatz haben, wo die Nummer, der Status, etc.. vorhanden sind und nicht mehr.
            seine Antwort ist aber auch kein Beweis für ein Fehldesign, das interpretierst Du nur. Vielleicht hast Du Recht, vielleicht nicht. Du beantwortest aber auch nicht die Frage.
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Das sollte doch auch funktionieren, denke ich
              Code:
              SELECT COUNT( DISTINCT a )
              FROM foo
              WHERE b <> 'offen'

              Kommentar


              • #8
                Wenn du das Count weglässt... (und unter der Annahme es gibt nur offen/nicht offen)

                Kommentar


                • #9
                  Wenn das count weg fällt zählt er doch nicht und genau das will er ja.
                  Ich habe kein Oracle, daher kann ich das nicht testen aber unter Mysql ging das so wie von mir aufgeführt.

                  Kommentar


                  • #10
                    Hallo,

                    es sollen nur die IDs gezeit werden, die geschlossen sind:

                    ich habe eine Tabelle:

                    ID-2014-00181 offen
                    ID-2014-00943 abgeschlossen
                    ID-2015-00492 abgeschlossen
                    ID-2018-00114 offen
                    ID-2014-00181 abgeschlossen
                    ID-2016-00549 abgeschlossen
                    ID-2018-00015 abgeschlossen
                    ID-2016-00100 offen
                    ID-2014-00943 abgeschlossen
                    ID-2014-00181 abgeschlossen
                    ID-2018-00497 abgeschlossen


                    Nun bin ich auf der Suche nache einer SQL-Anweisung die es mir ermöglicht die ID-Nummern zu zählen die abgeschlossen sind.

                    Beispiel die Nr. ID-2014-00181 dürfte nicht angezeit werden, weil sie 2x "geschlossen" ist, aber einmal offen.

                    Die ID mit der Nummer ID-2014-00943 müsste angezeit werden, weil sie in keiner Zeile "offen" ist.

                    Kommentar


                    • #11
                      protestix du hast dann 6 als ergebnis, ich glaube er will aber 5 haben, weil es bei dem ..181 zwei "geschlossen" aber auch eines gibt das "offen" ist.

                      Beispiel die Nr. ID-2014-00181 dürfte nicht angezeit werden, weil sie 2x "geschlossen" ist, aber einmal offen.
                      Daher hätte ich das auch hinterfragt

                      Hier wäre ein fiddle dazu.. http://sqlfiddle.com/#!9/7e44a3/1

                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Hier eine Oracle Variante mit Pivot. Ob ich die Bedingung richtig verstanden hab, weiß ich auch nicht. Aber man kann mit dem Zwischenergebnis alles machen, was man braucht.

                        http://sqlfiddle.com/#!4/53a66/2

                        Kommentar


                        • #13
                          Vielen Dank für die Tipps, ich habe es hinbekommen.. Funktioniert gut mit dem Pivot...

                          Kommentar

                          Lädt...
                          X