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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aider moi pour une requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aider moi pour une requete

n°908299
Scarf3ss3
Posté le 26-11-2004 à 10:58:43  profilanswer
 

Voilà je n'arrive pas à faire une requete SQL pour mysql
J'ai 2 tables X et Y
Je veux séléctionner tous les enregistrements de la table X qui posséde la valeur C. Le resultat me donne donc enregistrement de X 1, enregistrement de X 2, ..., enregistrement de X n.  
Ensuite je veux sélectionner tous les enregistrement de la table Y qui posséde la clé des enregistrements de X 1, enregistrement de X 2, ..., enregistrement de X n.
Ca doit donc me donner: enregistrement de Y 1, enregistrement de Y 2, ..., enregistrement de Y n.  
Pour finir je veux séléctionner que les 5 premiers enregistrements de ce dernier resultat ayant la valeur date la plus élevée.
 
Voila est-ce que c'est possible en une seule requete ? si oui aidez moi car je n'y arrive pas. Je ne peux pas passer par une boucle PHP car étant donné le nombre de resultat énorme ça va faire beaucoup trop de requete...

mood
Publicité
Posté le 26-11-2004 à 10:58:43  profilanswer
 

n°908317
krolours1
Posté le 26-11-2004 à 11:25:48  profilanswer
 

il faudrait que tu décrives mieux les tables
mais a priori ça parait possible

n°908351
Scarf3ss3
Posté le 26-11-2004 à 11:57:13  profilanswer
 

krolours1 a écrit :

il faudrait que tu décrives mieux les tables
mais a priori ça parait possible


Voilà j'ai fait ça, en esperant que vous allez pouvoir m'aider

Code :
  1. table x
  2. +----+-----+
  3. | id | val |
  4. +----+-----+
  5. | 1  | A   |
  6. | 2  | C   |
  7. | 3  | A   |
  8. | 4  | C   |
  9. | 5  | C   |
  10. +----+-----+
  11. table Y
  12. +-------+--------+-----------+
  13. |  id   |id de X |    date   |
  14. +-------+--------+-----------+
  15. |   1   |   5    | Avril 2004|
  16. |   2   |   1    | JUIN 2004 |
  17. |   3   |   4    | Avril 2004|
  18. |   4   |   2    | Aout 2004 |
  19. |   5   |   1    | JUIN 2004 |
  20. |   6   |   4    | Avril 2004|
  21. |   7   |   3    | JUIN 2004 |
  22. |   8   |   4    | Mars 2004 |
  23. |   9   |   4    | Avril 2004|
  24. +-------+--------+-----------+


 
Donc si je récapitule par ordre chrono
ma requete doit donc sélectionner les enregistrements 2,4,5 de la table X
Ensuite elle doit donc selectionner les enregistrements 1, 3, 4, 6, 8, 9 de la table Y.
Et donc au final me ressortir  les 5 enregistrements de Y les plus récents soit: 1,3, 4, 6, 9.
 
Je vous remercie par avance  :hello:
 
edit: j'ai eu tort de mettre mes dates sous ce format mais je vous rassure elles sont bien de la forme aaaa-mm-jj dans ma table


Message édité par Scarf3ss3 le 26-11-2004 à 12:00:08
n°908366
Mattioux
flemme inside
Posté le 26-11-2004 à 12:16:52  profilanswer
 

Salut,
 
voilà une requête pour l'enregistrement de Y le plus récent:
 
select Y.id
from X, Y
where Y.id_de_x = X.id
and Y.date = (select max(Y1.date) from Y Y1
  where Y.Id = Y1.Id)
and X.val = 'C'
 
 Pour les cinq c'est un peu plus chaud, et je peux pas trop t'aider plus par manque de temps, désolé ...
 
Bonne chance, Tchussy

n°908373
Scarf3ss3
Posté le 26-11-2004 à 12:24:17  profilanswer
 

Mattioux a écrit :

Salut,
 
voilà une requête pour l'enregistrement de Y le plus récent:
 
select Y.id
from X, Y
where Y.id_de_x = X.id
and Y.date = (select max(Y1.date) from Y Y1
  where Y.Id = Y1.Id)
and X.val = 'C'
 
 Pour les cinq c'est un peu plus chaud, et je peux pas trop t'aider plus par manque de temps, désolé ...
 
Bonne chance, Tchussy


Merci je vais essayer, si ça marche il me suffira de faire un ORDER BY date DESC LIMIT 5
Je vous tiens au courant


Message édité par Scarf3ss3 le 26-11-2004 à 12:24:29
n°908689
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-11-2004 à 16:51:35  profilanswer
 

:heink:
 
SELECT Y.id
FROM Y, X
WHERE X.val = 'C'
AND Y.id_de_X = X.id
ORDER BY Y.date desc
LIMIT 5
 
Ca suffit [:spamafote]


Message édité par Arjuna le 26-11-2004 à 16:52:03
n°908710
Scarf3ss3
Posté le 26-11-2004 à 17:37:13  profilanswer
 

Arjuna a écrit :

:heink:
 
SELECT Y.id
FROM Y, X
WHERE X.val = 'C'
AND Y.id_de_X = X.id
ORDER BY Y.date desc
LIMIT 5
 
Ca suffit [:spamafote]


 :jap:  
Merci infiniment ça fonctionne nickel !
Dernière question qui n'a rien à voire.
Est-ce qu'à chacune de vos requetes vous faites apres un mysql_free_result pour libérer la mémoire ? Si non vous le faites quand ?

n°908750
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-11-2004 à 18:56:51  profilanswer
 

Moi je fais un rs.Close et un Set rs = Nothing, mais c'est pas du PHP :D

n°912502
Yonel
Monde de merde !
Posté le 01-12-2004 à 21:41:02  profilanswer
 

Murat a écrit :

tu peut en dire plus stp ? ca m'interesse  :??:


 
c'est de l'ASP ;)

n°912520
naeh
Posté le 01-12-2004 à 22:04:50  profilanswer
 

Mattioux a écrit :

Salut,
 
voilà une requête pour l'enregistrement de Y le plus récent:
 
select Y.id
from X, Y
where Y.id_de_x = X.id
and Y.date = (select max(Y1.date) from Y Y1
  where Y.Id = Y1.Id)
and X.val = 'C'
 
 Pour les cinq c'est un peu plus chaud, et je peux pas trop t'aider plus par manque de temps, désolé ...
 
Bonne chance, Tchussy


 
a ma connaissance les requetes imbriquées ne marchent pas en mysql mais bon on ne sait jamais :)

mood
Publicité
Posté le 01-12-2004 à 22:04:50  profilanswer
 

n°912792
titione
addicted
Posté le 02-12-2004 à 11:58:08  profilanswer
 

ça marche avec la dernière version de sql en tout cas !

n°912980
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-12-2004 à 15:50:23  profilanswer
 

Ben c'est comme du PHP sauf que ça tourne sur le service IIS de Windows NT et non pas Apache, et que c'est une techno M$ et non pas GNUchaipakoi et que la syntaxe est dérivée du VB et non pas d'un micmac comme le PHP.
 
Ensuite, tout comme le PHP, on peut faire du 100% bien crade comme il faut, ou du 100% presque propre comme on peut :)
 
(comme le PHP, l'ASP n'est pas un langage typé, donc c'est un peu chiant. Cela dit, je trouve qu'en bon nombre de points il est bien plus propre, même si sa permissivité permet de le rendre plus crade que du PHP de goret ;))

n°912991
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-12-2004 à 15:57:42  profilanswer
 

En gros, en ASP, on peut faire propre :
 

Code :
  1. Option Explicit
  2. Dim sql
  3. Dim cnx
  4. Dim rs
  5. Dim nom
  6. Dim prenom
  7. sql = "select * from toto"
  8. Set cnx = Server.CreateObject("ADODB.Connection" )
  9. cnx.Open cnxString, login, password
  10. Set rs = Server.CreateObject("ADODB.RecordSet" )
  11. Set rs.ActiveConnection = cnx
  12. rs.Open sql
  13. Set nom = rs("nom" )
  14. Set prenom = rs("prenom" )
  15. do while not rs.EOF
  16.   Response.Write "<p>" & nom & " " & prenom & "</p>"
  17.   rs.MoveNext
  18. loop
  19. rs.Close
  20. Set rs = Nothing
  21. cnx.Close
  22. Set cnx = Nothing


 
Tout comme on peut faire crade :
 

Code :
  1. Set cnx = Server.CreateObject("ADODB.Connection" )
  2. cnx.Open cnxString, login, password
  3. Set rs = cnx.Execute "select * from truc"
  4. do while not rs.EOF
  5.   Response.Write "<p>" & rs("nom" ) & " " & Response.Write rs("prenom" ) & "</p>"
  6.   rs.Movenext
  7. loop


 
Les deux marchent de la même façon.
Le premier est débugable et ne laisse pas un gros bordel dans la mémoire de IIS, l'autre va bouffer des ressources pas possible dans IIS (connections et recordsets qui restent en mémoire jusqu'au timeout bdd) et complètement indébugable pour peu que la page soit un peu chargée.
 
En bref, comme le PHP, on peut faire du crade comme du propre. Mais je trouve que mise à part quelques points noirs (chaînes de caractères) l'ASP permet globalement de faire du code plus lisible.


Message édité par Arjuna le 02-12-2004 à 15:59:31

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aider moi pour une requete

 

Sujets relatifs
Rêquete imbriqué avec MySQLRequete ACCESS pour conserver la plus haute note
Requête croisée -> Etat sous Accessprobleme de requete[resolu]
synthaxe requete avec chaineBoucher les trous dans une requête
aider moi a faire ma requete Sql Svpaider mon pour ma requete Sql svp
[sql] aider moi a creer cette requete...[SQL] Merci de m'aider à faire cette requete... facile pour un pro ;)
Plus de sujets relatifs à : Aider moi pour une requete


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