MYSQL if statements

Résolu
Bonjour,

Je cherche un tuto sur l'utilisation du if statement en mysql, mais impossible d'en trouver. Si personne n'en connait, quelqu'un saurait il si on peut se servir du if mysql dans une requête passée par php?

En vous remerciant,

Smoke

--
Tout le pouvoir du bambou
Configuration: personnelle^^

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. La documentation non ?

    En général, on se sert plus de case que de if.
    1. bin justement, la doc m'aide pas franchement pour ce qui m'intéresse :s, de plus, je n'ai jamais vu d'aide php dans la doc mysql^^ :s
      1. Quel rapport avec le php ?

        http://dev.mysql.com/doc/refman/5.0/fr/if-statement.html
        http://dev.mysql.com/doc/refman/5.0/fr/case-statement.html
        1. Lol, merci de ton intérêt^^ j'ai déjà parcouru la doc sur le if, mais pas sur le case.
          En fait je trouve pas comment j'pourrais intéresser un if mysql dans une requête mysql appellée via php :s j'trouve rien dessus :s
          1. SELECT DISTINCT count( n.ref ) , n.chatTag, n.ref, n.Date, n.Titre, n.author, n.reader, a.artName
            FROM notebox n
            INNER JOIN accounts a ON 
            begin
            if n.reader='0000000001' then n.author=a.tag;
            else n.reader = a.tag
            end//
            WHERE (
            n.reader = '0000000001'
            OR author = '0000000001'
            )
            AND n.Stat >0
            AND n.Own LIKE '%0000000001%'
            GROUP BY n.chatTag
            LIMIT 0 , 30
            1. Utilise le case, ou la fonction if() si tu n'as que 2 états, la structure if|else ne doit pas être utilisable directement dans une requête.
              1. Salut, et merci pour ton coup de main au passage :)
                Comment suis je supposé intégrer ces conditions dans ma requête? comme ça, sauvagement, avec des délimiteurs précis?
                1. Non, sans délimiteurs.
                  Avec CASE, cela devrait faire :
                  ... FROM notebox n
                  INNER JOIN accounts a ON 
                  CASE n.reader
                      WHEN '0000000001' THEN n.author=a.tag
                      ELSE n.reader = a.tag
                  END
                  WHERE ...
                  Et avec la fonction IF :
                  ... FROM notebox n
                  INNER JOIN accounts a ON IF(n.reader='0000000001', n.author=a.tag, n.reader = a.tag)
                  WHERE ...
                  1. ouaaaaaaaaaaaaaa ça m'a tout l'air de marcher!!! je colle ça dans mon php pour vérifier et j'te dis :)
                    1. Bon, okay, ça devrait le faire maintenant :) ça m'a évité pas mal de galères avec php!! Je laisse mon ancien code en commentaire, histoire de mettre à l'épreuve le système actuel^^
                      En tous cas merci pour ton aide, je planchais dessus depuis une bonne semaine :)

                      Bonne journée!