Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2361 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  (RESOLU) [PHP / Mysql] Requete SELECT très complexe

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

(RESOLU) [PHP / Mysql] Requete SELECT très complexe

n°1137646
hyptnos
GT : Gui iom
Posté le 01-07-2005 à 19:14:33  profilanswer
 

Bon tres complexe pour moi surement enfantin pour d'autre
j'explique le cas de figure:
 
Je dev donc un petit outils de gestion du parc info et donc j'ai une table qui me stocke les changement de pc avec ceci comme info
 
http://img111.imageshack.us/img111/816/table7gl.jpg
 
Donc dans la table au fil du temps sera renseigner plusieur machine pour la meme personne. logique puisque c'est un historique seulement je veux m'appuyer de cette table la pour faire une requete qui me liste l'inventaire de l'affectation c'est à dire à ce jour quel machine a partien a qui
 
Donc pour commencer j'ai fait un

Code :
  1. SELECT * FROM suivi_inventaire where site like '$site'


 
$site est egale à $_POST['site'] que lon renseigne dans un formulaire avant
 
Or en faisant cela  je liste pour le site voulu tout les enregistrements or cela ne me convient pas puisque j'aurais des doublons en gros cela affice
 
num tech     Date      site      Num serie         Cause
999       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
999       2005/03/12   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
234       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
321       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2002/03/08   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2004/05/16   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
255       2005/08/06   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
 
Or ce que je veux c'est  
 
num tech     Date      site      Num serie         Cause
999       2005/03/12   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
234       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
321       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2004/05/16   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
255       2005/08/06   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
 
VOus voyez? je veux seulement les enregistrement (sans doublon) dont la date est la plus rencente si y a plusieur enregistrement pour le meme numéro de technicien alors on prend la plus recente
 
J'ai essayé une requete du style
 

Code :
  1. SELECT suivi_inventaire.num_tech, max( date_change ) FROM suivi_inventaire group  by num_tech


 
Je pensais que max( date_change) aurais fait l'affaire mais cela ne va pas.
 
Quelqu'un a une idée? ais je bien expliquer le probleme? si vous voulez d'autre info pas de souci
 
Mais pitier aider moi
 
Merci par avance ^^


Message édité par hyptnos le 04-07-2005 à 20:09:41
mood
Publicité
Posté le 01-07-2005 à 19:14:33  profilanswer
 

n°1137653
nero27
Posté le 01-07-2005 à 19:38:23  profilanswer
 

Je dis peut-être une bêtise (j'ai pas beaucoup d'expérience en MySQL) mais avec cette requête ça donne quoi :
 

Code :
  1. SELECT * FROM suivi_inventaire order by date_change desc group  by num_tech


 
?


Message édité par nero27 le 01-07-2005 à 19:38:43
n°1137658
Max Evans
Posté le 01-07-2005 à 19:47:47  profilanswer
 

et un SELECT DISTINCT * ... ORDER BY num_tech ?
 
Le DISTINCT te permet justement de ne pas ressortir tous les enregistrements doublons ;)


Message édité par Max Evans le 01-07-2005 à 19:48:05

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1137660
hyptnos
GT : Gui iom
Posté le 01-07-2005 à 19:52:21  profilanswer
 

Donc j'ai mis
en premier:

Code :
  1. $RESULT=mysql_db_query("cer27","SELECT * FROM suivi_inventaire where site like '$site' order by date_change desc group  by num_tech


et la il me met une belle erreur :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\easyphp1-7
 
Ensuite j'ai essayé le DISTINC comme ci dessous  
 

Code :
  1. SELECT DISTINCT * FROM suivi_inventaire where site like '$site' ORDER BY num_tech


 
Et aucun changement il m'affiche tout les enregistrement
D'autre idées?


Message édité par hyptnos le 01-07-2005 à 19:55:03
n°1137661
Max Evans
Posté le 01-07-2005 à 19:53:40  profilanswer
 

Ha oui forcément, la date n'est pas la même, donc les enregistrements ne sont pas identiques, donc le DISTINCT ne marche pas :D
 
Je réfléchis :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1137686
sielfried
Posté le 01-07-2005 à 20:34:50  profilanswer
 

hyptnos a écrit :


Code :
  1. SELECT suivi_inventaire.num_tech, max( date_change ) FROM suivi_inventaire group  by num_tech


Je pensais que max( date_change) aurais fait l'affaire mais cela ne va pas.  


 
Et qu'est-ce qui ne va pas ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1137699
hyptnos
GT : Gui iom
Posté le 01-07-2005 à 20:50:39  profilanswer
 

Bas il me liste la premiere ligne (je n'ai que deux entrée dans la table pour le moment de quoi faire des test, je precise que les deux entrée ont le tech identique mais seule la date et le num serie change) donc il me liste le premier qui n'est pas forcement le plus recent.
Et dans sql il me rajoute un champs max(date_change)
 
c'est a dire que quand je tape la requete directeme nt dans mysql il me met
 
tech    site     date_change    numserie    max(date_change)
999     205       2004/10/21    XXXXXXX      01/07/2005
 
Bizarrequoi et dans la page web j'ai un enregistremet (sur 2) et c'est pas le bon

n°1137701
Max Evans
Posté le 01-07-2005 à 20:51:45  profilanswer
 

GROUP BY date_change alors :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1137702
Max Evans
Posté le 01-07-2005 à 20:52:00  profilanswer
 

GROUP BY date_change DESC plutôt même ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1137706
hyptnos
GT : Gui iom
Posté le 01-07-2005 à 20:55:53  profilanswer
 

Code :
  1. SELECT suivi_inventaire.num_tech, max( date_change ) FROM suivi_inventaire GROUP BY date_change DESC where site like '$site'


 
j'ai mis cela et il me repond une erreur mais c pas quoi j'en peu plus snifff

mood
Publicité
Posté le 01-07-2005 à 20:55:53  profilanswer
 

n°1137707
papy_danon​e
Posté le 01-07-2005 à 20:56:47  profilanswer
 

hyptnos a écrit :


J'ai essayé une requete du style
 

Code :
  1. SELECT suivi_inventaire.num_tech, max( date_change ) FROM suivi_inventaire group  by num_tech


 
Je pensais que max( date_change) aurais fait l'affaire mais cela ne va pas.


 
pourtant c'est bon en théorie. C'est quoi le pb ?

n°1137708
Max Evans
Posté le 01-07-2005 à 20:57:10  profilanswer
 

SELECT num_tech, max( date_change ) FROM suivi_inventaire WHERE site LIKE '$site' GROUP BY date_change DESC
 
PS : Pourquoi > WHERE site LIKE '$site' et pas WHERE site = '$site' ? :)


Message édité par Max Evans le 01-07-2005 à 20:57:28

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1137713
papy_danon​e
Posté le 01-07-2005 à 20:59:35  profilanswer
 

hyptnos a écrit :

Code :
  1. SELECT suivi_inventaire.num_tech, max( date_change ) FROM suivi_inventaire GROUP BY date_change DESC where site like '$site'


 
j'ai mis cela et il me repond une erreur mais c pas quoi j'en peu plus snifff


 
le where avant le group by

n°1137752
hyptnos
GT : Gui iom
Posté le 01-07-2005 à 21:48:20  profilanswer
 

donc j'ai mis cecic
 

Code :
  1. $RESULT=mysql_db_query("cer27","SELECT suivi_inventaire.num_tech, max( date_change ) FROM suivi_inventaire WHERE site = '$site' GROUP BY date_change DESC" );
  2. while($row=mysql_fetch_array($RESULT)){
  3. ....
  4. ....
  5. ...
  6. }


 
et voila ce que cela me donne
 
http://img46.imageshack.us/img46/3139/error7ir.jpg
 
Donc 1 y a une probleme de recup d'info mais ce n'est pas la le souci meme si je comprend pas pourquoi
et 2 et surout 2 lol il me liste mes deux enregistrement alors qu'il devrait en lister qu'un
 
J'ai compris pourquoi il affiche pas tout car j'ai pas mis SELECT * c'est pour ca m'enfin cela n'arrange pas le pb 2 et le probleme d'origine donc


Message édité par hyptnos le 01-07-2005 à 21:49:45
n°1137803
hyptnos
GT : Gui iom
Posté le 01-07-2005 à 22:36:38  profilanswer
 

Bon bas j'abandonne pour se soir j'espere que quand je reviendrais demain des personne auront d'autre idée a me soumettre car si je pouvais avoir terminé Lundi pour le retour du boulot cela sera cool
 
Aller bonne nuit a tous et merci a ceux qui ont commencer a m'aider continuer comme ca ^^

n°1137826
sielfried
Posté le 01-07-2005 à 23:36:15  profilanswer
 

hyptnos a écrit :

Bas il me liste la premiere ligne (je n'ai que deux entrée dans la table pour le moment de quoi faire des test, je precise que les deux entrée ont le tech identique mais seule la date et le num serie change) donc il me liste le premier qui n'est pas forcement le plus recent.
Et dans sql il me rajoute un champs max(date_change)
 
c'est a dire que quand je tape la requete directeme nt dans mysql il me met
 
tech    site     date_change    numserie    max(date_change)
999     205       2004/10/21    XXXXXXX      01/07/2005
 
Bizarrequoi et dans la page web j'ai un enregistremet (sur 2) et c'est pas le bon


 
Nan c'est pas normal. Déjà que la requête t'affiche tout alors que tu demandes que le numéro de tech, je trouve pas ça très logique...
 
En tout cas,

SELECT num_tech, max(date_change)  
FROM suivi_inventaire  
GROUP BY num_tech

doit afficher pour chaque numéro de technicien la date_change la plus récente. Si ça le fait pas, balance exactement les données de ta table, qu'on puisse voir, paskeu là... [:figti]
 
edité avec le bon group by [:spamafote]


Message édité par sielfried le 02-07-2005 à 14:00:29

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1138032
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 13:28:16  profilanswer
 

Bon cela ne fonctionne pas
 
Alors voici les données de la table
 
http://img214.imageshack.us/img214/7794/donn7se.jpg
 
Donc jsute deux ligne pour le moment de quoi faire les test le meme agent avec une machine et une date différente ce que je veux donc c'est une requette qui me resorte le numéro de serie et l'agent pour la date la plus recente
 
donc la requete que tu m'as donne directement dans Mysql me donne ceci
 
http://img184.imageshack.us/img184/9484/sql26eu.jpg
 
Je vous l'avais bien dis c'est complexe lol ^^

n°1138043
sielfried
Posté le 02-07-2005 à 13:59:33  profilanswer
 

Arrg je voulais dire  
 


SELECT num_tech, max(date_change)  
FROM suivi_inventaire  
GROUP BY num_tech


 
:x


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1138107
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 15:41:26  profilanswer
 

Donc la ok cela me donne bien une ligne avec  
999 et la date la plus recente
 
seulement ce qui m'interesse egalement c de recuperer le numéro de serie de la machine apartenant au technicien pour cette date la plus recente or j'ai repris ton code en rajoutant le champs du numéro de serie
 

Code :
  1. SELECT num_tech, num_serie, max(date_change) 
  2. FROM suivi_inventaire 
  3. GROUP BY num_tech


 
OR la je recupere une ligne toujorus avec le numero de technicien la date la plus recente mais le numéro de serie correspond a celui de l'enregistrement de l'autre date et non pas au numéro de serie qui foit se trouve sur la date affiche
 
donc approche du but mais c'est pas encore cela
 
Une idée?


Message édité par hyptnos le 02-07-2005 à 15:42:55
n°1138144
sielfried
Posté le 02-07-2005 à 17:02:08  profilanswer
 

GROUP BY num_tech, num_serie


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1138148
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 17:14:51  profilanswer
 

sielfried a écrit :

GROUP BY num_tech, num_serie


 
*En faisant cela il m'affiche les deux enregistrement donc ca va pas
 
pfeee c si complexe que cela?

n°1138152
Zzozo
Un peu, passionément, à la fol
Posté le 02-07-2005 à 17:24:35  profilanswer
 

hyptnos a écrit :

*En faisant cela il m'affiche les deux enregistrement donc ca va pas

pfeee c si complexe que cela?


A qui tu la poses la question là ?


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1138156
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 17:32:39  profilanswer
 

Bas je dis cela comme ca je debute dans le monde Php/mysql je tombe sur se probleme la donc je me dis c'est normal je debute  mais je m'attendais pas a ce que le probleme soit si complique a resoudre vu que pour le moment malgré les recherche des sympathique gens qui m'on aider rien de convaincant n'en n'est sortie.
 
je suis meme a me demander si cela est possible

n°1138164
Zzozo
Un peu, passionément, à la fol
Posté le 02-07-2005 à 17:46:22  profilanswer
 

hyptnos a écrit :

Bas je dis cela comme ca je debute dans le monde Php/mysql je tombe sur se probleme la donc je me dis c'est normal je debute  mais je m'attendais pas a ce que le probleme soit si complique a resoudre vu que pour le moment malgré les recherche des sympathique gens qui m'on aider rien de convaincant n'en n'est sortie.
 
je suis meme a me demander si cela est possible


1/ Là c'est pas un pb de PHP mais de SQL (voire de modèle de données mais bon ça c'est une autre histoire ...)
2/ Ce que tu veux est possible   Quelle version de Mysql utilises tu ? (dev et cible)
 
EDIT : Au passage, c'est clair si t'as pas un minimum vue de théorie sur les SGBDR, et notamment la théorie des ensembles, dès que tu vas quitter le cadre de simples requetes, tu risques d'être perdu ... mais si ça peut te consoler, tu seras pas le seul à avoir rencontré ce genre de problèmes [:spamafote]


Message édité par Zzozo le 02-07-2005 à 17:48:54

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1138165
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 17:49:57  profilanswer
 

j'utilise
phpMyAdmin 2.5.3 avec MySQL 4.0.15
Ensuite oui c purement sql mais la requete devra egalement fonctionneer sous php ensuite vu que c pour un intranet

n°1138168
Zzozo
Un peu, passionément, à la fol
Posté le 02-07-2005 à 17:58:03  profilanswer
 

Tu peux m'expliquer en français dans le texte, le résultat que tu veux obtenir ?
Sois explicite, stp, c'est important.


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1138175
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 18:06:58  profilanswer
 

Donc j'ai une table suivi_inventaire avec les champs
num_tech (numéro a trois chiffre identifiant l'utilisateur)
date_change (date du changement de machine)
num_serie (numéro de serie de la machine)
cause (cause du changement)
site (situation géographique de l'utilisateur)
 
Donc il y aura tout l'inventaire du parc avec l'historique des changement dans la meme et unique table
Donc j'ai deja une page qui permet de recuperer l'historique de changement avec recherche par personne ou par machine
mais maintenant je veux qui me liste l'intégralité des utilisateur d'un site avec le numéro de serie et la date de changement la plus récente
 
Admettons qu'il y es dans le site 201 5 utilisateurs qui sera comme sui dans la table
 
num tech     Date      site      Num serie         Cause
 
999       2005/03/12   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
234       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
321       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2002/03/08   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
999       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
255       2005/08/06   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2004/05/16   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
 
Nous voyons que 999 et 434 revient deux fois puisqu'il ont eu un changement de machine donc moi ce que je veux c avoir tout le monde mais dont la date de changement par utilisateur et la  plus recente
 
Or ce que je veux c'est  
 
num tech     Date      site      Num serie         Cause
999       2005/03/12   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
234       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
321       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2004/05/16   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
255       2005/08/06   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
 
Est ce que j'ai assez bien expliquez ou est ce que cela est encore flou? je sais c pas evident d'expliquer car moi je sais c que je veu mais l'expliquer c pas facile
 
Sinon merci d'avace pour ton aide

n°1138191
Zzozo
Un peu, passionément, à la fol
Posté le 02-07-2005 à 18:24:44  profilanswer
 

hyptnos a écrit :

Donc j'ai une table suivi_inventaire avec les champs
num_tech (numéro a trois chiffre identifiant l'utilisateur)
date_change (date du changement de machine)
num_serie (numéro de serie de la machine)
cause (cause du changement)
site (situation géographique de l'utilisateur)
 
Donc il y aura tout l'inventaire du parc avec l'historique des changement dans la meme et unique table
Donc j'ai deja une page qui permet de recuperer l'historique de changement avec recherche par personne ou par machine
mais maintenant je veux qui me liste l'intégralité des utilisateur d'un site avec le numéro de serie et la date de changement la plus récente
 
Admettons qu'il y es dans le site 201 5 utilisateurs qui sera comme sui dans la table
 
num tech     Date      site      Num serie         Cause
 
999       2005/03/12   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
234       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
321       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2002/03/08   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
999       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
255       2005/08/06   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2004/05/16   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
 
Nous voyons que 999 et 434 revient deux fois puisqu'il ont eu un changement de machine donc moi ce que je veux c avoir tout le monde mais dont la date de changement par utilisateur et la  plus recente
 
Or ce que je veux c'est  
 
num tech     Date      site      Num serie         Cause
999       2005/03/12   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
234       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
321       2004/12/21   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
434       2004/05/16   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
255       2005/08/06   205        XXXXXXXXX   xxxxxxxxxxxxxxxxx
 
Est ce que j'ai assez bien expliquez ou est ce que cela est encore flou? je sais c pas evident d'expliquer car moi je sais c que je veu mais l'expliquer c pas facile
 
Sinon merci d'avace pour ton aide


 
il peut pas y avoir deux changements de machine le même jour pour le même utilisateur (le même num_tech quoi) ? oui ? non ?


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1138209
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 18:34:28  profilanswer
 

Non il peu pas y avoir la meme personne qui change sa machine 2 fois le meme jour

n°1138213
Zzozo
Un peu, passionément, à la fol
Posté le 02-07-2005 à 18:38:15  profilanswer
 

hyptnos a écrit :

Non il peu pas y avoir la meme personne qui change sa machine 2 fois le meme jour


ha ... pour arriver à obtenir EXACTEMENT ce que tu souhaites (cad savoir pour chaque personne, quelle  
est la machine en cours, la dernière quoi), il va falloir que tu modifies le type de date_change en datetime alors


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1138214
sielfried
Posté le 02-07-2005 à 18:39:19  profilanswer
 

hyptnos a écrit :

*En faisant cela il m'affiche les deux enregistrement donc ca va pas
 
pfeee c si complexe que cela?


 
Ben je passe pas mon temps à réfléchir dessus non plus, tu pourrais ptete avoir qq idées aussi, surtout que tu peux faire des tests toi... [:spamafote]  
 
Bon, cette fois j'y ai réfléchi un peu plus sérieusement, je pense que ceci devrait marcher :
 

SELECT num_tech, num_serie, max(date_change) as max_date_change  
FROM suivi_inventaire  
GROUP BY num_tech, num_serie
ORDER BY max_date_change DESC LIMIT 1


 
C'est moche, cela dit. MySQL gère les sous-requêtes dans ces dernières versions, non ? Parce que ç'aurait été bien plus simple pour le coup. J'pense pas que ta version les gère cela dit.


Message édité par sielfried le 02-07-2005 à 18:40:01

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1138216
python
Posté le 02-07-2005 à 18:39:34  profilanswer
 

je vois rien de complexe là-dedans :heink:

n°1138217
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 18:40:08  profilanswer
 

c quoi la différence entre date et datetime
juste l'heure ne plus non?
je ne vois pas en quoi sa gene puisque y aura PAS le meme jour la meme personne avec une machine différente

n°1138226
Zzozo
Un peu, passionément, à la fol
Posté le 02-07-2005 à 18:46:02  profilanswer
 

hyptnos a écrit :

c quoi la différence entre date et datetime
juste l'heure ne plus non?
je ne vois pas en quoi sa gene puisque y aura PAS le meme jour la meme personne avec une machine différente


dsl j'avais lu de travers et j'avais compris que ça pouvait arriver plus d'un changement le même jour [:petrus75]
 
Donc, faut faire ça en deux étapes :
1/ tu stockes dans une table temporaires les doublets (max_date,num_tech)
2/ tu fais une jointure toute bête entre cette table temporaire et ta table pour afficher les infos que tu veux avoir    voilà  [:dao]


Message édité par Zzozo le 02-07-2005 à 18:46:27

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1138228
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 18:49:01  profilanswer
 

pas compris et c pas faire lol peux tu me guider ?

n°1138237
python
Posté le 02-07-2005 à 18:57:39  profilanswer
 

Zzozo a écrit :

dsl j'avais lu de travers et j'avais compris que ça pouvait arriver plus d'un changement le même jour [:petrus75]
 
Donc, faut faire ça en deux étapes :
1/ tu stockes dans une table temporaires les doublets (max_date,num_tech)
2/ tu fais une jointure toute bête entre cette table temporaire et ta table pour afficher les infos que tu veux avoir    voilà  [:dao]


 
 
Pas correct d'avoir deux tables. :non:
 
Moi j'aurais essayé de faire une requête imbriquée, ie : une requête qui fait le max de la date d'une requête qui groupe par numéro de série et qui groupe aussi par date
 
Sinon on utilise PL/SQL et les curseurs avec Oracle pour résoudre ce problème.


Message édité par python le 02-07-2005 à 18:58:04
n°1138238
sielfried
Posté le 02-07-2005 à 18:58:18  profilanswer
 

hyptnos a écrit :

pas compris et c pas faire lol peux tu me guider ?


 
Alors ça marche pas mon truc ? [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1138244
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 19:01:30  profilanswer
 

sielfried a écrit :

Alors ça marche pas mon truc ? [:figti]


 
J'aais zapper ton message je l'avais pas vu mille excuse surtout que vien d'essayé et cela focntionne impec
 
merci  
 
donc pour ce que cela interesse

Code :
  1. SELECT num_tech, num_serie, max(date_change) as max_date_change 
  2. FROM suivi_inventaire 
  3. GROUP BY num_tech, num_serie
  4. ORDER BY max_date_change DESC LIMIT 1


 
Mais le DESC LIMIT 1 veux dire quoi?
 
Je vais maintenant rajouter des enregistrement bidon et faire des essai je vous redis cela mais j'aimerais surtout savoir a quoi correspond le DESC LIMIT 1

n°1138247
hyptnos
GT : Gui iom
Posté le 02-07-2005 à 19:05:21  profilanswer
 

Donc cela ne va pas car il me donne qu'un seul resultat sur tout la table or moi je veux tout les utilisateur mais pour la quel la date est la pls recente pour chacun d'eux

n°1138249
python
Posté le 02-07-2005 à 19:08:47  profilanswer
 

L'usage du mot-clé limit ou de rowcount est à bannir car elle peut briser son code, à moins de savoir ce qu'on fait.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  (RESOLU) [PHP / Mysql] Requete SELECT très complexe

 

Sujets relatifs
Encodage UTF-8 MySQL/phpExporter une base de donnée MySQL
[PHP] Trier par ordre alphabétiquePhp et menu <select mulitple>
Mysql et la fonction max() Excel Croisement de données entre 2 feuilles [resolu]
mise à jour automatique d'un formulaire avec requete SQL[Résolu] [C#] Déclaration de tableaux d'objets à taille inconnue
[mysql] une clé primaire est elle par défaut un index ? 
Plus de sujets relatifs à : (RESOLU) [PHP / Mysql] Requete SELECT très complexe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR