Select mit IF Bedingung

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

  • Select mit IF Bedingung

    Ich habe eine Tabelle mit 2 Feldern

    Author / Booking_Code

    Booking_Code unterscheidet sich an der ersten Stelle in "B" oder "O"

    Die Tabelle durchsuche ich wie folgt:
    SELECT Author, if(substring(Booking_Code,1,1) = 'B', count(Booking_Code), '0') AS BOOKING,
    if(substring(Booking_Code,1,1) = 'O', count(Booking_Code), '0') AS OFFER
    FROM Reservations
    WHERE group by Author, substring(Booking_Code,1,1)

    Als Ergebnis bekomme ich dann:
    Author / BOOKINGS / OFFER
    A / 3 / 0
    A / 0 / 15
    B / 27 / 0
    B / 0 / 33
    ...

    Gibt es eine Abfragemöglichkeit pro Author beide Informationen in eine Zeile zu bekommen, also

    A / 3 / 15
    B / 27 / 33
    ....

    Danke !

  • #2
    Falsches Datenbankdesign. So eine Information gehört in eine extra Spalte bzw. Tabelle.

    Kommentar


    • #3
      Vielen Dank für den konstruktiven Beitrag - das Design ist historisch vorgegeben. Die Tabelle hat noch zig andere Felder die ich weggelassen habe für die Übersichtlichkeit. Vielleicht gibt es nicht nur Besserwisser im Forum - Danke im Voraus.

      Kommentar


      • #4
        Das ist keine Besserwisserei, sondern erst mal eine Tatsache, siehe auch Normalisierung. Mit solchen Antworten musst du rechnen, wenn du nicht sagst, dass das historisch bedingt ist und du es nicht ändern kannst.

        Zu deinem Problem. Da ich mit so einen DB-Design noch nie zu tun hatte, würde ich spontan mal einen SELF JOIN vorschlagen. Kann mich aber auch irren.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Code:
          SELECT Author,
                 SUM( SUBSTRING( Booking_Code, 1, 1 ) = 'B' ) AS BOOKING,
                 SUM( SUBSTRING( Booking_Code, 1, 1 ) = 'O' ) AS OFFER
          FROM Reservations
          GROUP BY Author
          Und am Tonfall arbeitest du aber bitte ein bisschen, sonst habe ich in Zukunft bestimmt keine Lust mehr, dir weiterzuhelfen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hallelujah - vielen Dank Wahsaga !

            Ich werde an meinem Tonfall arbeiten aber der Kollege sollte sich auch mal den Frust vorstellen, wenn man eine ernsthafte Anfrage nach stundenlangen Versuchen stellt.

            Nochmals allen Helfern Danke!

            Kommentar

            Lädt...
            X