Bonjour à tous.
J'ai une requete dont j'aimerai exclure les résultats dont une valeur est la plus grande
ma requete de base
J'aimerai exclure le résultat où i.`position` =MAX(i.`position`)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT i.`id_image`, i.`id_product`, i.`position`, i.`cover`, ims.`id_shop` FROM `ps_image` i INNER JOIN `ps_image_shop` ims on (i.`id_image` = ims.`id_image`) LEFT JOIN `instagram` ins ON (i.`id_image` = ins.`id_image`) WHERE i.`id_product` = 1154 AND ins.`id_image` IS NULL ORDER BY i.`position` DESC
J'ai d'abord tenté
mais j'ai le message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT i.`id_image`, i.`id_product`, i.`position`, i.`cover`, ims.`id_shop` , MAX( i.`position` ) AS maxpos FROM `ps_image` i INNER JOIN `ps_image_shop` ims on (i.`id_image` = ims.`id_image`) LEFT JOIN `instagram` ins ON (i.`id_image` = ins.`id_image`) WHERE i.`id_product` = 1154 AND ins.`id_image` IS NULL AND i.`position` < maxpos ORDER BY i.`position` DESC
Ensuite j'ai tenté==>#1054 - Unknown column 'maxpos' in 'where clause'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT i.`id_image`, i.`id_product`, i.`position`, i.`cover`, ims.`id_shop` FROM `ps_image` i INNER JOIN `ps_image_shop` ims on (i.`id_image` = ims.`id_image`) LEFT JOIN `instagram` ins ON (i.`id_image` = ins.`id_image`) WHERE i.`id_product` = 1154 AND ins.`id_image` IS NULL AND i.`position` < MAX( i.`position` ) ORDER BY i.`position` DESCEt finalement j'ai réussit en utilisant une sous-requete.==> #1111 - Invalid use of group function
Il y aurait il une autre solution?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 SELECT i.`id_image`, i.`id_product`, i.`position`, i.`cover`, ims.`id_shop` FROM `ps_image` i INNER JOIN `ps_image_shop` ims on (i.`id_image` = ims.`id_image`) LEFT JOIN `instagram` ins ON (i.`id_image` = ins.`id_image`) WHERE i.`id_product` = 1154 AND ins.`id_image` IS NULL AND i.`position` < (SELECT MAX( i.`position` ) AS maxpos FROM `ps_image` i INNER JOIN `ps_image_shop` ims ON ( i.`id_image` = ims.`id_image` ) LEFT JOIN `instagram` ins ON ( i.`id_image` = ins.`id_image` ) WHERE i.`id_product` =1151 AND ins.`id_image` IS NULL) ORDER BY i.`position` DESC
Partager