begin process at 2008 08 20 12:24:52
1 228 823 membres
193 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme avec une requete [ Archives / Problème avec une requête ] (deadstar2)

Probleme avec une requete le 15/08/2005 01:50:26

deadstar2
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!

Re : Probleme avec une requete le 15/08/2005 10:34:11

nhervagault
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.




Re : Probleme avec une requete le 15/08/2005 16:21:55

deadstar2
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!

Re : Probleme avec une requete le 15/08/2005 16:45:47

deadstar2
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 :)

Re : Probleme avec une requete le 15/08/2005 17:14:26

deadstar2
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

Re : Probleme avec une requete le 15/08/2005 18:00:55

nhervagault
Réponse acceptée !

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




Classé sous : type, and, requete, id, annonces

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS