[MySQL] Limite sur jointure

Limite sur jointure [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 01-08-2013 à 15:13:03    

Hello,

 

Je cherche à faire une limite sur une jointure (ou autre moyen tant que ça reste léger) avec MySQL 5.1.

 
Code :
  1. * Table o
  2. o.id o.etat
  3. * Table a
  4. a.parent_id a.date a.champ a.nouvelle_valeur
 

Je veux sortir toutes les entrées de o dont l'état est X ET il me faut la date du dernier passage à X.
a contient les changements effectués sur o donc a.parent_id correspond à o.id.

 

Il faut donc pour toute entrée dans o dont etat = X, sortir l'id de o avec la date de la dernière entrée dans a dont a.champ = 'etat' et a.nouvelle_valeur = 'X'

 

Une idée simple ?
J'ai tenté en passant par une création de table temporaire mais comme o est déjà une grosse table et a est donc encore plus grosse, c'est lourd.

 

Merci.


Message édité par Shadow aok le 01-08-2013 à 15:13:29
Reply

Marsh Posté le 01-08-2013 à 15:13:03   

Reply

Marsh Posté le 01-08-2013 à 15:48:25    

select o.id,a.date from o join a on a.etat=o.champ where a.nouvelle_valeur='X' order by a.date desc group by id
 
??

Reply

Marsh Posté le 01-08-2013 à 16:05:38    

Sauf que tu ne peux pas faire un group by après un order.
Donc en tant que tel, j'aurai la date de la première entrée et non de la dernière.


Message édité par Shadow aok le 01-08-2013 à 16:08:22
Reply

Marsh Posté le 01-08-2013 à 16:13:05    

Résolu en faisant comme ceci, comme quoi, rien ne sert de chercher compliqué :

Code :
  1. SELECT o.id, (SELECT a.date  FROM a WHERE a.parent_id = o.id AND a.champ = 'etat' AND a.nouvelle_valeur = 'X' ORDER BY a.date DESC LIMIT 1) as date
  2. FROM o
  3. WHERE o.etat = 'X'


Message édité par Shadow aok le 01-08-2013 à 16:13:21
Reply

Marsh Posté le 02-08-2013 à 09:17:31    

Select o.id, max(a.date) from a inner join on .....


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed