Probleme avec une requete

Résolu
deadstar2 Messages postés 6 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 15 août 2005 - 15 août 2005 à 01:50
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 15 août 2005 à 18:00
Bonjour à tous,

Je n'ai pas un excellent niveau en sql, j'aimerais faire appel à vos connaissances pour une requete dont je n'arrive pas à obtenir ce que je veux:

J'utilise 4 tables : annonces a, annonces b, users c et photos d
Voici la requete:

SELECT c.*,
d.*,
b.type_a,b.id,b.ville,b.cp,b.pays,b.loyer,b.description,b.h_f,
a.id AS idann

FROM annonces a,annonces b,users c,photos d

WHERE b.ville=a.ville AND b.id_user=c.id AND a.type_a!=b.type_a AND b.online='1'

ORDER BY a.id_user ASC

J'aimerais que si il y a une photo qui corresponde à une annonce (donc d.id_annonce=b.id), ma requete retourne dans la ligne de resultat le champs nom de la photo et si il y en a pas , mais qu'elle retourne un champs vide dans la ligne de résultat

si je rajoute dans la clause WHERE la condition "AND d.id_annonce=b.id", cela ne fonctionne que si il existe effectivement une image

J'espere que j'ai été assez clair, j'ai un peu de mal a parler SQL mais je pense qu'on va se comprendre ;)

Merci d'avance!

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 août 2005 à 18:00
Salut,



Pour la reponse , il y a t'il une autre solution que doubler les tables;

Si tu as les structures que tu presente rapidement.

Type = demande ou offre, je ne pense pas qu'il y a d'autre solution.



Sinon



Pour la deuxieeme question,

Le limit et le top peuvent repondre à ta question sur certaine base.



...

Je te laise chercher la solution

Je n'ai pas la structure des tables.



mais dans certain SQL tu peux mettres les select partout

exemple dans le select

dans le from

dans le where

Dans le having ?



Mais le groupby a plus de chance de fonctionner pour ta reponse



Je parts duprincipe que tu utilises un champs text pour mettre le chemin de la photo.



select b.type_a,b.id,b.ville,b.cp,b.pays,b.loyer,b.description,b.h_f,

a.id AS idann, max(d.chemin_photo)

from .....

where ....

order by a.id_annonce, d.id_photo

Group by b.type_a,b.id,b.ville,b.cp,b.pays,b.loyer,b.description,b.h_f,

a.id
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 août 2005 à 10:34
SELECT c.*,

d.*,

b.type_a,b.id,b.ville,b.cp,b.pays,b.loyer,b.description,b.h_f,

a.id AS idann



FROM annonces a,

INNER JOIN annonces b,

ON b.ville=a.ville

INNER JOIN users c

ON b.id_user=c.id

LEFT JOIN photos d

ON d.id_photo = a.id_photo

WHERE a.type_a!=b.type_a AND b.online='1'

ORDER BY a.id_user ASC



Le left join est sans doute la solution que tu recherches

J'ai mis le lien sur annonce ?



Sinon pourquoi utilises - tu deux fois la tables des annonces dans la requetes.

C'est peut etre pour une demande particuliere externes au probleme.

Car pour repondre aux probleme posé, la table annonces n'a pas besoin d'etre dupliquee.
0
deadstar2 Messages postés 6 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 15 août 2005
15 août 2005 à 16:21
Salut, merci pour ta réponse ! je vais essayer de comprendre le principe de foncitonnement...

pour les 2 tables c est parcequ'en fait il y a d'autre condition que je n'ai pas affiché pour simplifer sinon elle faisait le double de taille... mais elle sert parceque'il il y en a une qui est utilisée car c'est une annonce de demande et l'offre une annonce d'offre et il faut verifier que l'une est bien une demande et l'autre une offre.

En tout cas merci je vais regarder ta solution de ce pas et vous retient au courant!
0
deadstar2 Messages postés 6 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 15 août 2005
15 août 2005 à 16:45
en fait, est quand tu me parles de la table annonces en double, pour toi il y aurait une autre solution plus simple ? si oui ça peut m'intéresser :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deadstar2 Messages postés 6 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 15 août 2005
15 août 2005 à 17:14
Ca marche nikel avec les inner join grand merci tu es fantastique ;)

petite question pendant que j'y suis, il si il y a plusieurs photos qui correspondent a une annonce, ça renvoie plusieurs lignes, y aurait il possibilité de limiter a la premiere trouvée? un peu comme un limit sur le inner join ? merci
0
Rejoignez-nous