MYSQL if statements

Résolu
Smoking bird Messages postés 911 Statut Membre -  
Smoking bird Messages postés 911 Statut Membre -
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

  1. P@t@ch0n Messages postés 603 Statut Membre 85
     
    La documentation non ?

    En général, on se sert plus de case que de if.
    0
  2. Smoking bird Messages postés 911 Statut Membre 58
     
    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
    0
  3. P@t@ch0n Messages postés 603 Statut Membre 85
     
    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
    0
  4. Smoking bird Messages postés 911 Statut Membre 58
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. P@t@ch0n Messages postés 603 Statut Membre 85
     
    Montre un exemple de requête que tu voudrais obtenir ;)
    0
  7. Smoking bird Messages postés 911 Statut Membre 58
     
    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
    0
  8. P@t@ch0n Messages postés 603 Statut Membre 85
     
    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.
    0
  9. Smoking bird Messages postés 911 Statut Membre 58
     
    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?
    0
  10. P@t@ch0n Messages postés 603 Statut Membre 85
     
    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 ...
    0
  11. Smoking bird Messages postés 911 Statut Membre 58
     
    ouaaaaaaaaaaaaaa ça m'a tout l'air de marcher!!! je colle ça dans mon php pour vérifier et j'te dis :)
    0
  12. Smoking bird Messages postés 911 Statut Membre 58
     
    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!
    0