probleme de requete

Eléphant du PHP | 72 Messages

21 déc. 2010, 21:33

Bonjour,
je suis débutant et j'ai besoin d'aide pour construire ma requete ,
si quelqu'un peut m'aider je suis preneur, voici mon problème.

j'ai besoin de sélectionner les 4 derniers id_biens mais uniquement le dernier de la serie
dans notre exemple j'ai besoin de récupère id 12,11,9,7


j'ai une table images
id------id_biens
1------18
2 ------18
3 ------ 18
4 ------ 19
5 ------ 19
6 ------ 20
7 ------ 20
8 ------ 21
9 ------ 21
10 ------ 22
11 ------ 22
12 ------ 23
@++

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 déc. 2010, 21:47

salut,


a tu essayer un select distinct(id_bien) etc ?

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 72 Messages

21 déc. 2010, 22:23

alors j'ai manquer de précisions,
j'ai besoin de récupère le dernier file des 4 derniers id_biens mais uniquement le dernier de la série.

donc la j'ai besoin de récupère ce qui sont en gras dans mon exemple
Avec la requete ci-dessous le retour est 18:19:20:21

Code : Tout sélectionner

SELECT DISTINCT id_biens,file FROM images_annonces limit 4

id------id_biens------file

1------18----------1.jpg
2 ------18----------2.jpg
3 ------ 18---------- 3.jpg
4 ------ 19----------4.jpg
5 ------ 19----------5.jpg
6 ------ 20----------6.jpg
7 ------ 20----------7.jpg
8 ------ 21----------8.jpg
9 ------ 21----------9.jpg
10 ------ 22----------10.jpg
11 ------ 22----------11.jpg
12 ------ 23----------12.jpg
@++

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 déc. 2010, 22:40

Quelque chose dans ce genre là ?
SELECT DISTINCT MAX(id), id_biens FROM images_annonces GROUP BY id_biens
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 déc. 2010, 23:23

SELECT id_biens,file FROM images_annonces group by id_biens order by id_biens desc limit 4;
mais t'a pas les images que tu veut ^^

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 72 Messages

22 déc. 2010, 00:15

merci a vous,

moogli ont y est presque ;

le résultat de ta requete me sort les verts au lieu des rouges
c'est a dire qu'elle me sort les premiers de chaque séries en partant du haut
alors que moi il me faut les derniers de chaque série en partant des derniers enregistrements.




id------id_biens------file
1------18----------1.jpg
2 ------18----------2.jpg
3 ------ 18---------- 3.jpg
4 ------ 19----------4.jpg
5 ------ 19----------5.jpg
6 ------ 20----------6.jpg
7 ------ 20----------7.jpg
8 ------ 21----------8.jpg
9 ------ 21----------9.jpg
10 ------ 22----------10.jpg
11 ------ 22----------11.jpg
12 ------ 23----------12.jpg
@++

Eléphant du PHP | 72 Messages

23 déc. 2010, 19:09

ne m'oublier pas svp on est pas loin de la solution , j'ai beau essayer seul mais je n'y arrive pas
@++

ViPHP
ViPHP | 2291 Messages

24 déc. 2010, 12:11

ne m'oublier pas svp on est pas loin de la solution , j'ai beau essayer seul mais je n'y arrive pas
Salut

Dans ton exemple simplement une clause WHERE
WHERE id > 8
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 72 Messages

24 déc. 2010, 12:14

merci pour la réponse mais la requete ne sort pas le bon résultat de plus

les id sont des exemples demain il me faudra récupéré les 3 deniers et il seront composer d'id 125 126 127
@++

ViPHP
ViPHP | 2291 Messages

24 déc. 2010, 12:37

Salut,

Effectivement j'avais pas tout lu
Quelque chose du genre peut-être
SELECT* 
FROM images_annonces 
WHERE id_biens LIKE '2_%'
ORDER BY id_biens DESC 
LIMIT 4 
LE LIKE '2_%' lui demande les id_biens qui commence par 2 donc si tu souhaite les 121,122,123 moi je ferais LIKE '12_%'
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 72 Messages

24 déc. 2010, 14:10

merci dunbar
la table va grandir de plus en plus et les id ne commencerons pas toujours par 12 donc il me faut un truc plus générique

voila l'exemple quelque que soit les numéros d'id il me faut récupère les 4 deniers des 4 dernières séries cad ceux en gras , ca m'a l'air bien raide
id------id_biens------file
1------18----------1.jpg
2 ------18----------2.jpg
3 ------ 18---------- 3.jpg
4 ------ 19----------4.jpg
5 ------ 19----------5.jpg
6 ------ 20----------6.jpg
7 ------ 20----------7.jpg
8 ------ 21----------8.jpg
9 ------ 21----------9.jpg
10 ------ 22----------10.jpg
11 ------ 22----------11.jpg
12 ------ 23----------12.jpg
@++

ViPHP
ViPHP | 2577 Messages

24 déc. 2010, 15:09

SELECT id_biens,Max(id) FROM images_annonces GROUP BY id_biens ORDER BY id_biens DESC LIMIT 4;
ou
SELECT id_biens,Max(id) as Max_id FROM images_annonces GROUP BY id_biens ORDER BY id_biens DESC LIMIT 4;

Eléphant du PHP | 72 Messages

24 déc. 2010, 15:54

j'ai pas de chance surement que la requete est bien construite mais elle en contient pas la colonne file , c'est bien l'url des images dans la colonne file que je doit récupère


d------id_biens------file
1------18----------1.jpg
2 ------18----------2.jpg
3 ------ 18---------- 3.jpg
4 ------ 19----------4.jpg
5 ------ 19----------5.jpg
6 ------ 20----------6.jpg
7 ------ 20----------7.jpg
8 ------ 21----------8.jpg
9 ------ 21----------9.jpg
10 ------ 22----------10.jpg
11 ------ 22----------11.jpg
12 ------ 23----------12.jpg
@++

ViPHP
ViPHP | 2577 Messages

24 déc. 2010, 16:31

Le plus simple est de refaire un accès pour trouver le fichier si la requete retourne le bon id.

Si Mysql le permet, tu peux faire une requete imbriquée :
select id, id_biens, file from images_annonces where id in (SELECT Max(id) FROM images_annonces GROUP BY id_biens ORDER BY id_biens DESC LIMIT 4);

ViPHP
ViPHP | 2291 Messages

24 déc. 2010, 17:57

j'ai pas de chance surement que la requete est bien construite mais elle en contient pas la colonne file , c'est bien l'url des images dans la colonne file que je doit récupère

Faudrait peut-être réfléchir un minimum au lieu d'attendre la solution toute faite.....
Il a donner la requete il manque simplment ,file c'est quand mêm pas compliquer de le rajouter.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.