Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1669 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete entre plusieurs tables (MySQL)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete entre plusieurs tables (MySQL)

n°758411
C@ssius
La rage de réussir wesh kouzin
Posté le 09-06-2004 à 21:00:49  profilanswer
 

Salut, j'ai deux tables :
 
rubriques
rub_id
rub_name
 
et
 
articles
art_id
art_rub_id
art_titre
 
il y a pleins d'articles, un article est rattaché à une seule rubrique via art_rub_id
 
je veux en une requete recuperer le nom d'une rubrique ainsi que le titre du dernier article ( = le titre de l'article dont art_id = max(art_id) )
 
j'ai fait ca :
 
SELECT rub_name, max(art_id) as rub_last  
FROM articles, rubriques  
WHERE rub_id = art_rub_id  
GROUP BY 1  
ORDER BY rub_order
 
ca me sort le titre d'une rubrique et l'id du dernier article. donc c pas exactement ske je veut
 
j'ai essayé ca mais ca marche pas (ca sort pas le dernier titre)
 
SELECT rub_name, art_titre AS rub_last
FROM articles, rubriques
WHERE rub_id = art_rub_id  
GROUP BY rub_name, rub_id, art_rub_id
ORDER BY rub_order
 
 
help   :cry:
 
 
ce que je cherche c'est un truc comme ca :
 
rubrique 1 -> titre du dernier article de la rubrique 1
rubrique 2 -> titre du dernier article de la rubrique 2
rubrique 3 -> titre du dernier article de la rubrique 3
...


Message édité par C@ssius le 09-06-2004 à 22:12:20

---------------
Le Tournoi : Résultats, Classements, Discussions . feed Rss IMDB
mood
Publicité
Posté le 09-06-2004 à 21:00:49  profilanswer
 

n°758461
C@ssius
La rage de réussir wesh kouzin
Posté le 09-06-2004 à 21:41:42  profilanswer
 
n°758522
Beegee
Posté le 09-06-2004 à 22:53:42  profilanswer
 

le plus simple est probablement de faire une table temporaire contenant les plus grands art_id pour chaque rubrique.
 
INSERT INTO last_articles
SELECT rub_name, max(art_id) as rub_last  
FROM articles, rubriques  
WHERE rub_id = art_rub_id  
GROUP BY rub_name;
 
Ensuite tu fais la jointure entre cette table temporaire et la table des articles pour récupérer les titres associés ;)

n°758670
C@ssius
La rage de réussir wesh kouzin
Posté le 10-06-2004 à 01:10:15  profilanswer
 

ca fait pl requetes ca :/


---------------
Le Tournoi : Résultats, Classements, Discussions . feed Rss IMDB
n°760767
BSRobin
Posté le 11-06-2004 à 19:19:07  profilanswer
 

Autant pour moi, j'ai dit des conneries:

Code :
  1. SELECT rub_id, rub_name, art_rub_id, MAX(art_id), art_name
  2. FROM test_articles, test_rubriques
  3. WHERE art_rub_id = rub_id
  4. GROUP BY art_rub_id


ne marche effectivement PAS.
 
Je réitère avant l'édition donc :
Il faut utiliser un LEFT JOIN ou un sub-select.


Message édité par BSRobin le 11-06-2004 à 19:52:19
n°760838
BSRobin
Posté le 11-06-2004 à 21:02:31  profilanswer
 

Oui, donc, c'est réalisable avec une sub-query (je n'ai pas une version de MySQL récente d'installée).
La condition de la sous-requête étant :
SELECT ...
FROM ...
WHERE art_id in (SELECT MAX(arttmp.art_id) FROM articles arttmp GROUP BY art_rub_id)
 
Dans le meilleur des mondes, MySQL supporterait depuis des années les vues, et tu en aurais créé une pour obtenir le dernier article pour chaque rubrique (en remplacement de la sous-requête).
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete entre plusieurs tables (MySQL)

 

Sujets relatifs
retour d'une requête SQL[PHP] Stocker plusieurs valeurs en une seule et les récupérer
Requete HTTP, Lire le flot d'une page HTML dans un script phprequete VB imbrique
tables system Oraclerequete SQL
Envoie de requete HTTPTrier plusieurs tableaux multi-dimensionnels
xml/mysql[MySQL] requete sur plusieurs tables ???
Plus de sujets relatifs à : requete entre plusieurs tables (MySQL)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR