Announcement

Collapse
No announcement yet.

Datensatz wo mindestens 3 WHERE Bedingungen zutreffen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensatz wo mindestens 3 WHERE Bedingungen zutreffen

    Hallo zusammen,

    ich stehe vor folgendem Problem:

    Ein Nutzer kann verschiedene Eigenschaften angeben, wobei jede Eigenschaft einem Feld in der Tabelle entspricht:

    -- Tabelle Users --
    userid eigenschaft1 eigenschaft2 [...]

    Nun möchte ich die Eigenschaften eines Users mit denen der anderen vergleichen und im Resultat die User bekommen, bei denen jeweils 3 Eigenschaften übereingestimmt haben.

    In pseudocode sähe das dann in etwa so aus:

    SELECT userid FROM users WHERE eigenschaft1=XY OR eigenschaft2=AB [...] aber mindestens 3 zutreffen

    Quasi etwas wie "OR", nur dass nicht mindestens eine, sondern drei Bedingungen zutreffen müssen.

    Danke schon mal im Voraus!

    Grüße
    veryxrv

  • #2
    AND könnte helfen
    Christian

    Comment


    • #3
      Nein, vielleicht hab ich mich missverständlich ausgedrückt:

      Nach WHERE kommen, sagen wir, 10 Bedingungen, von denen mindestens 3 zutreffen sollten, damit ein Datensatz ausgesucht wird. Jedoch ist nicht bekannt bzw. relevant, WELCHE von den 10 Bedingungen zutreffen soll, hauptsache es sind mindestens 3.

      Comment


      • #4
        Code:
        WHERE (bed1=x) + (bed2=x) + (bed3=x) + (bed4=x) > 2
        Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

        Comment


        • #5
          Dann musst du in deiner WHERE Bedingung alle Kombination von 3 aus 10 Abfragen(wenn mich meine Mathekenntnisse nicht im Stich lassen sind das 120)

          Also etwa

          [Highlight=SQL]WHERE (E1=E2 AND E2=E3)
          OR (E1=E2 AND E2=E4)
          -- blah viele viele weitere Zahlen
          OR (E8=E9 AND E9=E10)
          [/Highlight]

          Vielleicht solltest du dir eher Gedanken über ein besser zum Problem passendes Datenbankmodel machen(wenn möglich).


          Edit: Meinst du mindestens 3 müssen übereinstimmen oder genau 3? Im letzten Fall werden es noch ein paar Kombinationen mehr.

          Comment


          • #6
            Originally posted by dibo33 View Post
            Code:
            WHERE (bed1=x) + (bed2=x) + (bed3=x) + (bed4=x) > 2
            Ich glaube das hab ich gesucht, danke!

            Das mit den Verkettungen wäre schon etwas zu unübersichtlich, da dann wohl wirklich das Datenbank Design überdenken

            Comment


            • #7
              Hallo,
              Originally posted by dibo33 View Post
              Code:
              WHERE (bed1=x) + (bed2=x) + (bed3=x) + (bed4=x) > 2
              zu beachten wäre dabei nur, dass ALLE Bedingungsfelder befüllt sein müssen, also keine NULL-Werte enthalten sein dürfen. Ist auch nur ein Bedingungsfeld NULL, wird der gesamte Ausdruck NULL und damit die Where-Bedingung nicht erfüllt!

              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                Alles klar, danke für den Hinweis!

                Comment

                Working...
                X