par
Tracker » 04 oct. 2007, 18:23
En revanche comme tu le dis je souhaite conserver les dates du coup pour certains marchands il y a :
Marchand 1 (3)
alors que seulement 2 pubs sont encore valable, y'a t'il une possibilité pour conserver les dates?
J'ai du mal à comprendre ce que tu veux dire, mais bon je vais extrapoler:
- Ton marchand 1 à trois pubs (reductions) avec des dates de fin différentes
Si tu veux récupérer la liste des marchands avec le nombre de réductions de chacun, tu vois bien qu'il est difficile de faire, en SQL, entrer trois informations de date dans une seule case (sauf en utilisant un fonction utilisateur SQL permettant de caster les dates en chaine pour les concaténer, mais la méthode est crado !!)
Il te reste trois possibilités:
- faire un second ordre, récupérant marchand_id et date_fin dans reductions, que tu utiliseras en même temps que le premier ordre pour construire ton interface.
- bricoler l'ordre de départ pour obtenir la liste des dates, en même temps que le marchand et le nombre de réduction, et faire des ruptures (sur marchand_id) lors de l'affichage.
Marchand 1 (3) 01/01/2008
Marchand 1 (3) 01/02/2008
Marchand 1 (3) 01/03/2008
...
Code : Tout sélectionner
SELECT r.Marchand_code, m.ID, m.Marchand, m.Categorie, r1.nb, r2.date_fin
FROM marchand m
LEFT JOIN
(
select Marchand_id, count(*) as nb from reduction group by Marchand_id
) r1
ON m.ID = r1.Marchand_id
LEFT JOIN reduction r2
ON m.ID = r2.Marchand_id
ou dernière possibilité, compter (en php) les réductions par marchand lors de l'affichage (avec rupture sur marchand_id) en utilisant un ordre comme:
Code : Tout sélectionner
SELECT r.Marchand_code, m.ID, m.Marchand, m.Categorie, r.date_fin
FROM marchand m
LEFT JOIN reduction r
ON m.ID = r.Marchand_id
C'est toi qui vois !! la dernière semble quand même la plus simple.
[quote="Toons43"]
En revanche comme tu le dis je souhaite conserver les dates du coup pour certains marchands il y a :
Marchand 1 (3)
alors que seulement 2 pubs sont encore valable, y'a t'il une possibilité pour conserver les dates?
[/quote]
J'ai du mal à comprendre ce que tu veux dire, mais bon je vais extrapoler:
- Ton marchand 1 à trois pubs (reductions) avec des dates de fin différentes
Si tu veux récupérer la liste des marchands avec le nombre de réductions de chacun, tu vois bien qu'il est difficile de faire, en SQL, entrer trois informations de date dans une seule case (sauf en utilisant un fonction utilisateur SQL permettant de caster les dates en chaine pour les concaténer, mais la méthode est crado !!)
Il te reste trois possibilités:
- faire un second ordre, récupérant marchand_id et date_fin dans reductions, que tu utiliseras en même temps que le premier ordre pour construire ton interface.
- bricoler l'ordre de départ pour obtenir la liste des dates, en même temps que le marchand et le nombre de réduction, et faire des ruptures (sur marchand_id) lors de l'affichage.
Marchand 1 (3) 01/01/2008
Marchand 1 (3) 01/02/2008
Marchand 1 (3) 01/03/2008
...
[code]
SELECT r.Marchand_code, m.ID, m.Marchand, m.Categorie, r1.nb, r2.date_fin
FROM marchand m
LEFT JOIN
(
select Marchand_id, count(*) as nb from reduction group by Marchand_id
) r1
ON m.ID = r1.Marchand_id
LEFT JOIN reduction r2
ON m.ID = r2.Marchand_id
[/code]
ou dernière possibilité, compter (en php) les réductions par marchand lors de l'affichage (avec rupture sur marchand_id) en utilisant un ordre comme:
[code]
SELECT r.Marchand_code, m.ID, m.Marchand, m.Categorie, r.date_fin
FROM marchand m
LEFT JOIN reduction r
ON m.ID = r.Marchand_id
[/code]
C'est toi qui vois !! la dernière semble quand même la plus simple.