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 requête asp


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 39
    Points
    39
    Par défaut Optimiser requête asp
    salut j'ai 3 tables (cat, sscat et fiche) et je voudrai lister comme suit :
    cat1
    sscat1
    fiche1
    fiche2
    sscat2
    fiche3
    fiche4
    cat2
    sscat3
    fiche5
    etc... j'ai un code qui fonctionne parfaitement mais je souhaietrai savoir comment l'optimiser histoire de faire quelque chose de plus "joli" et surtout d'optimiser les temps de réponses car si a peu de fiche ca tourne super vite j'imagine qu'avec un grand nombre de fiches ca risque de ralentir pas mal, auriez vous une piste pour me faire progresser?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    SL11 = "SELECT * FROM cat ORDER BY genre, ordre ASC"
    Set rs11 = Conn.Execute(SL11)
    While Not rs11.EOF
    categorie=rs11("categorie").value
    idcat=rs11("idcat").value
    categorie=replace(categorie," "," ")
    	response.write categorie&"</br>"&vbCrLf
     
    		SL011 = "SELECT * FROM sscat WHERE idcat="&idcat&" "
    		Set rs011 = Conn.Execute(SL011)
    		While Not rs011.EOF
    		sscategorie=rs011("sscategorie").value
    		sscategorie=left(sscategorie,25)
    		sscategorie=replace(sscategorie," ","&nbsp;")
    		idsscat=rs011("idsscat").value
    			response.write sscategorie&"...</br>"&vbCrLf
     
    				SL012 = "SELECT * FROM fiches WHERE idsscat="&idsscat&" "
    				Set rs012 = Conn.Execute(SL012)
    				While Not rs012.EOF
    				titre=rs012("titre").value
    				idfiche=rs012("idfiche").value
    					response.write titre&" </br>"&vbCrLf	
    				rs012.MoveNext
    				Wend
    				rs012.Close
    				Set rs012 = Nothing
     
    		rs011.MoveNext
    		Wend
    		rs011.Close
    		Set rs011 = Nothing
     
    rs11.MoveNext
    Wend
    rs11.Close
    Set rs11 = Nothing

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Ta question relève plus du langage SQL que de l'ASP.
    Regarde du côté des jointures de tables en SQL.

  3. #3
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Il n'y a pas grand intérêt non plus à rajouter &vbCrLf après chaque response.write... à part à alourdir la réponse

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    bien sur le &vbCrLf n' a aucun intéret en soi c'est jsute que je génére un javascript et que j'ai besoin des retours à la ligne pour conserver une lisibilité.

    il faut effectivement que je regarde du coté des jointures mais j'avoue avoir des problemes avec le inner left right etc...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    si j'ai bien compris quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL = "SELECT * FROM fiches AS n, sscat AS s, cat AS c WHERE "
    SQL= SQL& "n.idsscat = s.idsscat AND s.idcat = c.idcat"
    SQL= SQL& " ORDER BY c.genre, c.ordre ASC, s.ordre ASC"
    Set rs= Conn.Execute(SQL)
    While Not rs.EOF
     
    titre=rs("titre").value
    j'obtiens bien le listing des fiches par titre bien classé et tout et tout...

    mais comment récupérer les noms des catégories par exemple qui sont dans la table cat et non la table fiche?
    j'ai essayé un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    titrez=rs("c.titre").value
    mais bien sur il me dit que cela ne fait pas partie de l'agrégat alors comment faire?

  6. #6
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Quel est le SGBDR?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    c'est pour de l'asp et une base access 2000.
    Pour l'instant j'explore une autre voie avec du innerjoin ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL = "SELECT "
    SQL = SQL & " fiches.titre, fiches.idfiche, fiches.idsscat, "
    SQL = SQL & " sscat.idsscat, sscat.sscategorie, sscat.idcat "
    SQL = SQL & " , cat.categorie, cat.idcat, cat.genre "
    SQL = SQL & "FROM (fiches "
    SQL = SQL & " INNER JOIN sscat ON"
    SQL = SQL & " fiches.idsscat = sscat.idsscat )"
    SQL = SQL & " INNER JOIN cat ON"
    SQL = SQL & " sscat.idcat = cat.idcat "
    SQL = SQL & " ORDER BY cat.genre, cat.ordre ASC, sscat.ordre ASC, fiches.idfiche ASC"
    ca semble rendre exactement la même chose mais cette fois avec les champs que je veux.
    Quelle différence entre le INNER JOIN et une requete double (ou triple dans l'exemple) ?

Discussions similaires

  1. Besoin d'aide pour optimiser requête SQL
    Par Keuf95 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/09/2005, 17h02
  2. Optimiser requête utilisant NOT IN
    Par Neilos dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/08/2005, 15h24
  3. optimisation requête
    Par alex2205 dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 09/02/2005, 15h15
  4. Réponses: 14
    Dernier message: 06/08/2004, 16h12
  5. optimisation requête SQL!!! help!!
    Par anathem62 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/05/2004, 17h26

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