Bonjour bonjour,
après une belle prise de tête, j'en suis venu à me dire que ce que je voulais faire était impossible, mais avant je viens le vérifier par ici ^^
Donc comme mon titre l'indique, je suis en environnement mysql3, no comment, on fait avec ce qu'on nous donne.
Voici le contexte:
J'ai 2 tables, une qui stock des marchants identifié par un id, et une table data qui stock pour chaque lancement d'un script, 2 nombres extrait de diverses informations, ainsi que la date de cette insertion.
Le but du jeu est donc de sélectionner les 2 données avec les 2 plus récentes dates pour chaque id.
Actuellement, j'ai bidouillé un truc avec php pour jouer sur les dates, le lancement du script ne devant être que journalier. Mais on vient de me faire remarquer que ce ne sera peut-être pas toujours le cas.
Donc j'en suis rendu là:
Qui a l'air de fonctionner, mais en fait les d2.uncat_offer et d2.total_offer ne correspondent pas au champ du MAX(d2.date)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT MAX(d1.date),MAX(d2.date),d1.merchantid,d1.uncat_offer,d1.total_offer,d2.uncat_offer,d2.total_offer from tomm_data d1,tomm_data d2 where d1.date>d2.date AND d1.merchantid=d2.merchantid GROUP BY d1.merchantid;
ce qui après reflexion parait logique.
Mais ca ne me fait pas avancer, voici le résultat donné.
Et voici mes tables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 +--------------+--------------+------------+-------------+-------------+-------------+-------------+ | MAX(d1.date) | MAX(d2.date) | merchantid | uncat_offer | total_offer | uncat_offer | total_offer | +--------------+--------------+------------+-------------+-------------+-------------+-------------+ | 1174385390 | 1174383710 | 110 | 738 | 234987 | 738 | 234987 | | 1174385390 | 1174383710 | 304 | 62 | 2845 | 62 | 2845 | | 1174385390 | 1174383710 | 372 | 1 | 1568 | 1 | 1568 | | 1174385390 | 1174383710 | 515 | 271 | 180556 | 271 | 180556 | | 1174385390 | 1174383710 | 840 | 416 | 30919 | 416 | 30919 | | 1174385390 | 1174383710 | 1061 | 0 | 0 | 0 | 0 | | 1174385390 | 1174383710 | 1096 | 32 | 2318 | 32 | 2318 |
table 1
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 +------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------+ | merchantid | int(8) | | PRI | 0 | | | name | varchar(100) | | | | | | country | varchar(5) | | | | | | date_in | int(10) | | | 0 | | | priority | int(10) | | | 0 | | +------------+--------------+------+-----+---------+-------+
table 2
Et donc pour chaque merchantid de la table1, il me faudrait les 2 tuples de la table2 correspondant aux 2 dernières dates.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 +-------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+-------+ | merchantid | int(8) | | | 0 | | | total_offer | int(10) | | | 0 | | | uncat_offer | int(10) | | | 0 | | | priority | int(10) | | | 0 | | | date | int(10) | | | 0 | | +-------------+---------+------+-----+---------+-------+
Merci à celui qui aura le courage de jeter un oeil à tout ce charabia.
Partager