MySQL - Verknüpfung einzelne spalte mit AND

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

  • MySQL - Verknüpfung einzelne spalte mit AND

    Hi,

    folgende Ergebnisstabelle erhalte ich ohne die WHERE-Klausel:

    tarifname | option
    -------------------
    tarifname1 | option1
    tarifname1 | option2

    Nun möchte ich in einer Abfrage prüfen, ob beide Optionen für den Tarif zutreffen.

    Es geht ja mittels WHERE option = 'option1' OR option = 'option2', aber dann erhalte ich Datensätze wenn auch nur ein Fall zutrifft. Ich möchte aber das alles zutrifft.

    WHERE option = 'option1' AND option = 'option2' bringt mir logischerweise gar keine Ergebnisse.

    wie kann ich ich das lösen?

  • #2
    Code:
    WHERE tarif= 'tarifname1'
    ?

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

    Kommentar


    • #3
      Zitat von lx-club Beitrag anzeigen
      Hi,

      folgende Ergebnisstabelle erhalte ich ohne die WHERE-Klausel:

      tarifname | option
      -------------------
      tarifname1 | option1
      tarifname1 | option2

      Nun möchte ich in einer Abfrage prüfen, ob beide Optionen für den Tarif zutreffen.

      Es geht ja mittels WHERE option = 'option1' OR option = 'option2', aber dann erhalte ich Datensätze wenn auch nur ein Fall zutrifft. Ich möchte aber das alles zutrifft.

      WHERE option = 'option1' AND option = 'option2' bringt mir logischerweise gar keine Ergebnisse.

      wie kann ich ich das lösen?
      Code:
      SELECT    `tarifname`
      FROM      `tabelle`
      WHERE     `option` IN ( 'option1', 'option2' )
      GROUP BY  `tarifname`
      HAVING    COUNT(*) = 2

      Kommentar


      • #4
        @ h3ll: genial :-) danke

        Kommentar


        • #5
          Hi,

          also so ganz klappt es nich nicht. Ich habe es mal etwas noch abgeändert:

          Code:
          SELECT    `tarifname`
          FROM      `tabelle`
          WHERE     `option` IN ( 'kennzeichen1', 'kennzeichen2','kennzeichen3' )
          GROUP BY  `tarifname`
          HAVING    COUNT(*) = 3
          Da ein kennzeichen mehrfach vorkommen kann, habe ich das noch gruppiert... ich glaube dann haut es mit dem count(*) nicht mehr hin. Wenn kennzeichen1 3 mal vorkommt und die restlichen 1 mal muss dort ne 5 stehen... Bekommt man es noch hin das ich dort die 3 stehen lassen kann und nur die gruppierten Werte gezählt werden?
          Zuletzt geändert von lx-club; 08.01.2010, 14:35.

          Kommentar


          • #6
            Dann wird das wohl so sein, also dass es keine 3 gibt, die die Bedinung erfüllen?
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              nee es ist dann so, das ich 5 angeben muss (also immer die Gesamtanzahl an Datensätzen)

              kennzeichen1 = 3 mal
              kennzeichen2 = 1 mal
              kennzeichen3 = 1 mal

              macht 5. Nur bekommei ch die Gesamtanzahl wohl nur über eine zweite Abfrage oder geht das auch in der gleichen Abfrage?

              Kommentar


              • #8
                Das muss auch in der gleichen Abfrage gehen, aber die Informationen sind bisher zu spärlich. Du sagst, ohne die Where-Klausel bekommst du nur die beiden Datensätze. Ist das nicht etwas wenig? Jetzt willst du irgendwie mehrere abrufen und ich frage mich, wo kommen die her, wenn es nur 2 gibt?

                Erklär mal bitte, was die Spalten bedeuten, so dass man erstmal die Logik hinter dem ganzen versteht. Dann können wir dir vermutlich auch weiterhelfen.

                Gruß,

                Amica
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  HAVING COUNT(DISTINCT `option`) = 3

                  Kommentar


                  • #10
                    Zitat von h3ll Beitrag anzeigen
                    HAVING COUNT(DISTINCT `option`) = 3
                    Danke, jetzt geht es... wußte gar nicht das distinct innerhalb von count funktioniert :-)

                    Kommentar

                    Lädt...
                    X