Nous sommes actuellement le 08 Juil 2026, 03:26

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 
Auteur Message
 Sujet du message: Requete MySQL
MessagePublié: 26 Fév 2007, 11:31 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
Bonjour,

J'ai un petit problème, je suis entrain de passer un logiciel en VB qui fonctionnait avec une base de données Acces à une base de données MySQL. Après quelques ajustements de mes requêtes, il n'y en a qu'une seule qui me pose encore problème. Dans une table, je stock les informations suivantes :
    IDEmploye
    Date
    IDJob1
    IDJob2
    IDJob3


Pour générer un rapport sur une semaine sous VB, je faisais avant une grosse requete SQL qui appelé 7 fois ma table, que je renommé avec le AS 7 fois et cela passé sans problème. Un peu dans ce genre là
Code :
Select distinct tbltable.date, tbltable.IDJob1, tbltable.IDJob2, tbltable.IDJob3, 2.IDJob1, 2.IDJob2, 2.IDJob3, 3.IDJob1, 3.IDJob2, 3.IDJob3  From tbltable, tbltable as 2, tbltable as 3 Where tbltable.date = 'date1', 2.date = 'date2', 3.date = 'date3'


Noté que date1, date2, date3 sont des vrais dates, j'ai mis date ici pour simplifier le tout.

Sous MySQL, cela ne marche pas du tout, la requete prend 3 éternités et demi avant de planter. Une idée de comment faire pour corriger ça car sous access, la meme requette passe en moins de 2 secs

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Fév 2007, 14:46 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
J'ai résolu le problème en utilisant une table temporaire mais si quelqu'un avait une solution sans table temporaire, j'aimerais la connaitre.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Fév 2007, 16:08 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
La manière dont c'est écrit et la manière que je le comprend, tu fait un full join 3 fois sur la même table...

Pour pouvoir t'aider, j'aimerais savoir à quoi sert la requête et ce qu'il faut que ça sorte ?

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Fév 2007, 17:05 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
C'est pour generer un rapport avec un datareport de VB6, il faut donc sortir toute les données en une seule requete. Le but est de sortir la planification des jobs des employés pour toutes la semaine.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Fév 2007, 09:59 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
Ok, mais pourquoi faire un join dans ce cas-là ? Un sql du genre ne ferait-pas la job ?
Code :
Select distinct tbltable.date, tbltable.IDJob1, tbltable.IDJob2, tbltable.IDJob3 From tbltable Where tbltable.date IN ('date1', 'date2', 'date3')

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Fév 2007, 11:05 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
Non, car vu comment marche le DataReport, il faut que sur la meme ligne de resultat, j'ai les 21 jobs pour les 7 jours. C'est là le gros point embettant de la patente.

Dans mon cas d'une table temporaire, j'ai fait une table avec 21 champs Jobs que j'ai rempli avec une boucle utilisant une requete semblable à celle que vous venez de poster.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Fév 2007, 13:53 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:31
Message(s) : 811
Localisation : Still on Mars
Salut,

Tu peux surment faire un left join sur la meme table.

Select * from table
LEFT join table AS a on a.id=table.id
LEFT join table AS b on b.id=table.id
LEFT join table AS c on c.id=table.id

Je crois que ce serait plus rapide.
Tien nous au courrant je suis curieux.

_________________
Pro_PHP

La Conference PHP Québec 2008
La communauté PHP Québec


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site