Version complète: sur le forum Webmaster Hub : problème de requete avec jointure
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
genmin
Bonjour, je cherche à ecrire une requete avec jointure de deux tables.
Voilà, j'ai une table annonces avec des annonces immobilières, et une deuxième avec les enregistrements des prix des annonces, mais il peut y avoir plusieur enregistrement si jamais le prix change. voici un exemple :

table annonces :

ID | type
1 | appartement
2 | maison

table prix:

ID | ID_annonces | prix | date
1 | 1 | 100000 | 2006-12-20
2 | 2 | 500000 | 2006-12-28
3 | 1 | 98000 | 2007-01-05


et je voudrai afficher ceci :

ID | type | prix | date
1 | appartement | 98000 | 2007-01-05
2 | maison | 500000 | 2006-12-28


merci d'avance pour tout renseignement.
Harry_20
Bonjour Genmin,

En toute logique la requête serait :

CODE
SELECT *
FROM annonces
INNER JOIN prix
ON annonces.ID = prix.ID_annonces


Dans ce cas, en cas de changement de prix, le nouveau prix sera automatiquement repris dans le résultat de la requête.

Personnellement je ne vois l'intérêt de dissocier l'annonce du prix, étant donné que le prix diffère pour chaque logement ... unsure.gif

Sans plus de détail sur ce que tu veux, je ne peux pas dire plus pour le moment.

Bon travail.
captain_torche
Dissocier l'annonce du prix, permet d'avoir un historique de ce dernier.
genmin
bonjour, et merci pour vos réponse, effectivement j'ai fais ce choix pour garder un historique du prix.
J'ai encore un petit problème, la requete que Harry_20 m'a donné donne pas le résultat attendu mais :


ID | type | prix | date
1 | appartement | 100000 | 2007-01-20
2 | appartement | 98000 | 2007-01-05
3 | maison | 500000 | 2006-12-28



comment faire pour n'avoir que le prix le plus récent ??

A+
Findel
Tu vas être obligé de le faire avec deux requetes je pense.

Mais je te conseille de voir le problème autrement : Tu garde tes deux tables, mais tu ajoute le prix dans la table des annonces.

Quand une annonce change de prix, tu fais :
UPDATE annonce SET prix = ... WHERE ID = ...
INSERT INTO prix (ID_annonce, prix, date) VALUES (..., ..., ...)

et pour afficher tes annonces ça devient donc super simple :
SELECT * FROM annonces

En fait, vu que tu as créé la table "prix" pour gérer un historique, va jusqu'au bout de l'idée, sert toi en uniquement d'historique
genmin
effectivement c'est pas idiot comme réflection, je vais surement partir la dessus.
Merci Findel
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.