Ralf: MySQL IN-Befehl variieren?

Hallo,

ich habe folgende Abfrage:

"WHERE IN ('$keyword1', '$keyword2')"

Das Problem ist, dass er mit dieser Abfrage alle Einträge abholt, die entweder keyword1 oder keyword zwei in der Menge haben. Ich suche jedoch nach einem Befehl, der nur Einträge abholt, wenn beide keywords in der Menge sind. Ist das möglich?

Vielen Dank im Vorraus!
Ralf

  1. Hello,

    "WHERE IN ('$keyword1', '$keyword2')"

    $ = PHP?
    Wenn ja, dann stelle deine Keywords in ein Array und nutze implode.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Vegetarier essen meinem Essen das Essen weg.
    1. Hello,

      Wenn ja, dann stelle deine Keywords in ein Array und nutze implode.

      wobei, vielleicht bin ich etwas voreilig. WAS willst du eigentlich erreichen? Redest du über EINEN Datensatz, der verschiedene Bedingungen erfüllen soll, oder redest du über x Datensätze, die x Bedingungen gleichzeitig erfüllen sollen?

      MfG
      Rouven

      --
      -------------------
      sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
      Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
      1. wobei, vielleicht bin ich etwas voreilig. WAS willst du eigentlich erreichen? Redest du über EINEN Datensatz, der verschiedene Bedingungen erfüllen soll, oder redest du über x Datensätze, die x Bedingungen gleichzeitig erfüllen sollen?

        Es geht um einen Datensatz, der x Bedingungen erfüllen soll, wenn ich das richtig sehe. In einer Tabelle habe ich Links zu Seiten, dann noch eine Tabelle in der verschiedene Tags stehen und in der dritten Tabelle steht, welches Tag mit welchem Link verbunden ist. Nun habe ich die drei Tabellen mit JOIN verbunden und möchte dann eben alle Links haben, die alle Tags enthalten.  Geht das vielleicht irgendwie unabhängig von IN?

  2. Moin,

    Das Problem ist, dass er mit dieser Abfrage alle Einträge abholt, die entweder keyword1 oder keyword zwei in der Menge haben. Ich suche jedoch nach einem Befehl, der nur Einträge abholt, wenn beide keywords in der Menge sind. Ist das möglich?

    Das müsste ungefähr so funktionieren:

      
    SELECT  
      *  
    FROM  
      tablename  
    WHERE  
      fieldname IN ('foo')  
    AND  
      fieldname IN ('bar');
    

    Ist aber ungestestet.

    mit freundlichen Grüssen
    Ulrich

    --
    Teiltransparente Bereiche
    selfcode: sh:| br:> ie:% mo:) va:) de:] zu:) fl:( ss:| ls:[
    um-fritz.de
    1. SELECT
        *
      FROM
        tablename
      WHERE
        fieldname IN ('foo')
      AND
        fieldname IN ('bar');[/code]

      Das funktioniert leider nicht. Da gibt es mir leider garkeinen Eintrag aus.

    2. Hallo!

      SELECT
        *
      FROM
        tablename
      WHERE
        fieldname IN ('foo')
      AND
        fieldname IN ('bar');

        
      Ein Feld in einem Datensatz kann mit IN() nicht mehr als einer Bedingung entsprechen. Entweder hat fieldname 'foo' oder 'bar'.  
        
      Wenn mußt Du mehrere Felder abfragen.  
        
      ~~~sql
        
      SELECT  
      
      >   *  
      
      FROM  
        tablename  
      WHERE  
        fieldname_1 IN ('foo')  
      AND  
         fieldname_2 IN ('bar');  
      
      

      André Laugks