|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Bonsoir,
Je n'arrive pas à faire fonctionner dans mes codes la fonction CREATE TEMPORARY TABLE Code :
La requete s'affiche bien dans phpmyadmin mais pas d'affichage sur ma page web. J'ai aussi affiché la syntax de la requete sur ma page web puis copier sur phpmyadmin pour controle et elle fonctionne. Je pense que cela doit venir de cette ligne : Code :
Je suis obligé de faire une table temporaire pour faire des jointures avec des lignes ou le résultat est null. pas de souci avec les jointures car je bloque juste avec le resulat de cette requete. Merci pour votre aide. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Il faut faire 2 requêtes séparées
Ça ne marche pas bien voir pas du tout de mettre plusieurs requêtes avec des ; Code :
|
||
|
00
|
|
|
#3 |
![]() ![]() |
Déjà qu'il faut éviter de relancer la guerre des étoiles, quel est l'intérêt de faire un SELECT * sur une table temporaire créée par une requête SELECT au lieu de récupérer directement le résultat de cette requête ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Merci, ca marche, une simple astuce et j'ai galéré pendant 3H hier.
Quelle gestion d'erreur ? je ne connais pas cela. Citation:
Et je viens de voir que la requête exécute 4 fois plus vite avec cette table temporaire qu'avec 1 seule requête et un résultat incomplet. Je sélectionne toujours les champs à afficher dans mes requêtes pour optimiser l'affichage de mon site mais merci du lien
|
|
|
|
00
|
|
|
#5 | |
![]() ![]() |
Citation:
On peut voir le code réel ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
le voici, mais pourquoi voulez vous le voir ?
Code :
Je pense aussi que la table temporaire réduit le temps d'affichage même si il y a une autre solution. |
||
|
|
00
|
|
|
#7 | |||
![]() ![]() |
1) table1, table2, table3
Vachement explicites comme noms de tables ! Je ne voudrais pas avoir à développer un truc utilisant ta BDD ! 2) Pourquoi n'utilises-tu pas la jointure normalisée (avec JOIN) dans la première requête alors que tu l'utilises dans la seconde ? 3) Comme tu n'utilises pas "groupe" dans la seconde requête, inutile de le mettre dans le SELECT de la première requête. 4) Tu ne fais la seconde requête que pour récupérer le pseudo du membre qui est dans la table3 ? Pourquoi ne pas faire ça en une seule requête ? Citation:
Si, comme je pense l'avoir compris d'après l'utilisation de la variable $id, table3.equipe = "groupe" de la première requête, alors tu dois pouvoir en une seule requête te passer de la condition sur l'équipe : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#8 | ||||||||
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Citation:
![]() si tu n'as pas compris que j'ai changé le nom de mes tables, ca devient grave ici. Citation:
Citation:
Citation:
Citation:
Citation:
Code :
|
||||||||
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Euh... non, pas spécialement, je risquerais d'avoir envie de tout vérifier et remodéliser !
![]() Citation:
Par contre ça aide quand même pas mal à la compréhension de la requête pour ceux qui veulent t'aider. Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#10 | ||||
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Ton code fonctionne sans faire la table temporaire, je n'avais pas trouvé malgré mes nombreux essais.
15 total, Traitement en 0.1239 sec le code avec la table temporaire est plus rapide comme je l'avais remarqué ce matin 15 total, Traitement en 0.0048 sec. mon code que j'avais réussi à faire avec 13 résultats affichés sans utiliser INNER JOIN mais seulement des jointures avec WHERE. 13 total, Traitement en 0.0389 sec. Les jointures sont peut être plus logique pour toi mais sur cet exemple, c'est moins rapide. j'ai rajouté ceci à ton code WHERE equipe = $id sinon il y avait les 6240 lignes de ma table3 Code :
car juste le code sans la table 3 avec ta jointure INNER JOIN est très rapide. 13 total, Traitement en 0.0014 sec. comme la mienne sans la jointure INNER. (voir ci dessous) 13 total, Traitement en 0.0013 sec Pour moi les 2 méthodes sont identiques, quel risque d'utilisé le WHERE au lieu de INNER JOIN. Code :
|
||||
|
|
00
|
|
|
#11 |
![]() ![]() |
Les deux syntaxes de jointures seront en principe traitées de la même façon par le SGBD, et heureusement !
Mais je ne compte plus le nombre de requêtes "kimarch'pas" proposées sur nos forums et que j'ai corrigées simplement en les récrivant avec la syntaxe JOIN. La plupart du temps, c'est une condition de jointure manquante ou une seule instance de table utilisée dans deux jointures. En plus je trouve la syntaxe avec JOIN bien plus claire que l'ancienne car elle permet de bien différencier les conditions de jointure des conditions de restriction. Et puis merde ! C'est la norme depuis 1992, il est temps de s'y mettre !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#12 | |
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Citation:
je vais lire cet article sur les jointures car c'est plus simple pour moi et fonctionne rapidement donc pas chercher plus loin |
|
|
|
00
|
|
|
#13 | |
![]() ![]() |
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#14 | |
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Je viens de lire ton lien et je connaissais déjà et j'ai même passé bien 30 mn dessus pour trouver mon cas sans succès.
Tu m'as donné le bâton pour te faire taper, les exemples de 1 à 7 sont pas les même que ma requête par hasard Je reconnais que c'est plus logique et plus clair à comprendre quand il y a une erreur mais pas plus pratique à écrire ou c'est une mauvaise habitude que j'ai prise depuis 30 ans, oui j'ai commencé avant 1992 cela doit venir de là. j'ai plus de connaissance en base ACCESS qu'en base MySQL ou cela fait que 3 ans que j'ai commencé à y travailler dessus. Par contre personne a répondu à cette remarque et ensuite je met résolu à cette demande. Merci pour cette discussion intéressante Citation:
|
|
|
|
00
|
|
|
#15 | ||||
![]() ![]() |
Citation:
Citation:
Citation:
Citation:
Par contre, la forêt de parenthèses mises par Access et l'imbrication des JOIN sont une horreur ! ![]() Pour la gestion d'erreur, il est d'usage, surtout quand on développe et qu'on est pas sûr que les requêtes fonctionnent, de faire ceci avec l'ancienne méthode : Code :
$result = mysql_query($sql) or die ("Erreur ! ". mysql_error());
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||
|
00
|
|
|
#16 | ||
|
Invité de passage
![]() Administrateur de base de données Inscription : janvier 2008 Messages : 15 ![]() |
Merci pour ces réponses et l'utilisation du JOIN est identique sous ACCESS mais j'ai toujours eu du mal à faire comme cela car cela fonctionne et comme je raisonne avec les WHERE quand je construit une requête comme un filtre à chaque fois cela me permet de rien oublié.
Le jour ou cela n'est plus permis, j'aurai du boulot à tout réécrire Code :
La page d’affichage est souvent vide et claire et cela permet aussi de faire un break ou on veut pour voir ou le code plante. Merci, je met résolu |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com