IF bedinung für alias in WHERE clause

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

  • IF bedinung für alias in WHERE clause

    folgendes problem bei anfrage, diese anfrage fkt ist aber oberlangsam

    PHP-Code:
    SELECT DISTINCT image.img_idCOUNTimage.img_id ) AS ctimage.urlUNIX_TIMESTAMPimage.datum ) AS timestampkeywords.de AS tmp
    FROM keyword 
    AS keywords
    INNER JOIN keyword_matches 
    AS matches
    USING 
    key_id )
    INNER JOIN imagebank AS image
    USING 
    img_id )
    WHERE (
    keywords.de LIKE '%fliegender'
    OR keywords.de LIKE 'fliegender%'
    )
    OR (
    keywords.de LIKE '%teppich'
    OR keywords.de LIKE 'teppich%'
    )
    OR (
    keywords.de LIKE 'fliegender teppich'
    )
    GROUP BY image.img_id
    HAVING ct 
    >= IF( tmp LIKE 'fliegender teppich'1)
    ORDER BY image.hits DESC
    LIMIT 0 
    25 

    ich wollte es eigentlich so lösen aber da krieg ich immer die fehlermeldung Unknown column 'ct' in 'where clause'

    PHP-Code:
     SELECT DISTINCT COUNTimage.img_id ) AS ctimage.img_idimage.urlUNIX_TIMESTAMPimage.datum ) AS timestamp
    FROM keyword 
    AS keywords
    INNER JOIN keyword_matches 
    AS matches
    USING 
    key_id )
    INNER JOIN imagebank AS image
    USING 
    img_id )
    WHERE (
    keywords.de LIKE '%fliegender'
    OR keywords.de LIKE 'fliegender%'
    )
    OR (
    keywords.de LIKE '%teppich'
    OR keywords.de LIKE 'teppich%'
    )
    OR (
    keywords.de LIKE 'fliegender teppich'
    )
    AND IF( 
    keywords.de LIKE 'fliegender teppich'1ct >=)
    GROUP BY image.img_id
    ORDER BY image
    .hits DESC
    LIMIT 0 
    25 
    mir entzieht sich grad der fehler warum soll das nicht gehen?

    danke für hilfe

  • #2
    Re: IF bedinung für alias in WHERE clause

    Original geschrieben von frank7l7


    ich wollte es eigentlich so lösen aber da krieg ich immer die fehlermeldung Unknown column 'ct' in 'where clause'...

    mir entzieht sich grad der fehler warum soll das nicht gehen?

    danke für hilfe
    in Where darfst du kein Alias verwenden sondern immer schön brav tablename.columnname nehmen!

    Kommentar


    • #3
      ok das hab ich verstanden aber gut dann mach ich halt

      PHP-Code:

      SELECT DISTINCT  image
      .img_idimage.urlUNIX_TIMESTAMPimage.datum ) AS timestamp
      FROM keyword 
      AS keywords
      INNER JOIN keyword_matches 
      AS matches
      USING 
      key_id )
      INNER JOIN imagebank AS image
      USING 
      img_id )
      WHERE (
      keywords.de LIKE '%fliegender'
      OR keywords.de LIKE 'fliegender%'
      )
      OR (
      keywords.de LIKE '%teppich'
      OR keywords.de LIKE 'teppich%'
      )
      OR (
      keywords.de LIKE 'fliegender teppich'
      )
      AND IF( 
      keywords.de LIKE 'fliegender teppich'1COUNTimage.img_id ) >=)
      GROUP BY image.img_id
      ORDER BY image
      .hits DESC
      LIMIT 0 
      25 
      das geht aber auch nicht -> Invalid use of group function ? erklärung hierfür?

      merci

      Kommentar


      • #4
        warum verwendest du LIKE ohne wildcard?

        Ich setze generell kein IF sondern Case ... When ein, nur so am Rande.

        Was hast du dir dabei gedacht, im 3. Argument eine Operation mit bool'sche Ergebnis einzubauen?

        Kommentar


        • #5
          ok das mit dem
          keywords.de LIKE 'fliegender teppich' ist dumm das
          keywords.de = 'fliegender teppich' das ist klar.

          was meinst du mit case bedingung - hab ich noch nie gehört? das problem mit der letzen bedingung ist halt ich hab eine inkonsitente keyword tabelle da sollte jeweils nur ein keyword drinstehen dummerweise stehen da auch ganze wortketten drin. aber sag wo kann ich mehr über diese case when blablub sache für 4.1 finden

          Kommentar


          • #6
            wo denn sonst? im Manual natürlich: http://dev.mysql.com/doc/refman/5.0/...functions.html

            Kommentar


            • #7
              ja , ... ähem war klar, ich habs auch damit hinbekommen es ist ein workaround noch nicht optimal aber es funktioniert schon mal

              Kommentar

              Lädt...
              X