IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Optimiser requete where & or


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut Optimiser requete where & or
    Bonsoir,

    je cherche à faire quelque chose qui ressemblerait au code ci-dessous mais en plus rationnel...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql=mysql_query("SELECT * FROM table WHERE page='$page' ORDER BY rand() LIMIT 1");
    if(mysql_num_rows($sql)=='0') { 
    $sqlb=mysql_query("SELECT * FROM table WHERE dossier='$dossier' ORDER BY rand() LIMIT 1");
    if(mysql_num_rows($sqlb)=='0') {
    $sqlc=mysql_query("SELECT * FROM table ORDER BY rand() LIMIT 1");
    }
    }
    n'est ce pas possible de faire ca en une requete ?
    je ne peux pas utiliser un simple OR car il faut que page='$page' soit preponderant sur dossier='$dossier'.

    merci de votre aide
    Carbon14

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    pourquoi ne pas faire un UNION, ensuite, tu ne récupère que le premier résultat, et hop
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Je ne sais pas si c'est possible avec mySQL, mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * FROM table 
    ORDER BY case when page = '$page'  then 0
                  when dossier = '$dossier' then 1
                  else 2
             end, rand()
    LIMIT 1
    devrait presque (attention à quelques effets de bord, faciles à préciser, si cette syntaxe est acceptée par mySQL) fonctionner.

    La prochaine fois, merci de ne pas mettre de code non SQL dans ce forum.

Discussions similaires

  1. Optimisation requete
    Par mic79 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/04/2005, 16h35
  2. optimisation requetes (besoin de votre avis)
    Par seb92 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/12/2004, 11h27
  3. [PL/SQL] Optimisation requete SQL
    Par CDRIK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/10/2004, 09h52
  4. [SYBASE] optimisation requete UPDATE
    Par metheorn dans le forum Sybase
    Réponses: 8
    Dernier message: 24/05/2004, 17h01
  5. Optimisation requetes SQL
    Par joel90 dans le forum Administration
    Réponses: 18
    Dernier message: 15/05/2004, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo