Page 1 sur 2
requete compliquée : /
Posté : 12 juil. 2005, 15:34
par VaN
Voila, j'ai une base de données, avec des articles, et des paragraphes. Il faut bien comprendre que les articles sont en fait le contenant des paragraphes. Ainsi, la table articles est juste composé d'un id_article,d'un titre, d'une date et de quelques autre trucs pas important. Les paragraphes eux sont liés aux articles par un l'id_article.
Ce que je souhaite faire :
lorsque j'affiche mes articles, n'affichez que ceux dont un (ou plusieurs) paragraphes leur est liés (c'est a dire qu'il faut qu'un paragraphe ait l'id de l'article pour que cet article soit affiché), de façon a ne passer afficher d'article vide.
ma requete :
<?php
$sql = "SELECT *,DISTINCT id_article,articles.date AS date_a
FROM articles,textes
WHERE articles.id_article=textes.id_article
AND id_categorie='$cat'
AND first='1'
ORDER BY date_a DESC";
?>
helas, cela a pour effet, si l'article contient N paragraphes, de m'afficher N fois l'article. J'ai essayer de jouer avec DiSTINCT, mais ça ne marche pas.
Quelqu'un peut t'il m'aider ?
Posté : 12 juil. 2005, 15:35
par ouckileou
enlève l'étoile déjà *
le DISTINCT s'appuie sur toute les données sélectionnées, donc si tu prends tout, ben t'auras pas de lignes identiques même pour un même article
Posté : 12 juil. 2005, 15:37
par VaN
j'en etai sur : // y'a moult champs ds ces deux tables : / bon je repost apres
Posté : 12 juil. 2005, 15:38
par mere-teresa
Modération : zouuuu dans "Base de données"
Posté : 12 juil. 2005, 15:40
par VaN
$sql = "SELECT DISTINCT articles.id_article,articles.id_categorie,articles.date_entree,articles.time_entree,
articles.nom,articles.first,textes.id_texte,textes.id_article,textes.date,
textes.date_entree,textes.titre,textes.texte,
articles.date AS date_a
FROM articles,textes
WHERE articles.id_article=textes.id_article
AND id_categorie='$cat'
AND first='1'
ORDER BY date_a DESC";
Posté : 12 juil. 2005, 15:41
par ouckileou
Posté : 12 juil. 2005, 15:43
par mere-teresa
$sql = "SELECT DISTINCT articles.id_article,articles.id_categorie,
articles.date_entree,
articles.time_entree,articles.nom,
articles.first,textes.id_texte,
textes.id_article,textes.date,
textes.date_entree,
textes.titre,
textes.texte,articles.date AS date_a
FROM articles,textes WHERE articles.id_article=textes.id_article
AND id_categorie='$cat'
AND first='1' ORDER BY date_a DESC";
que donne cette requete ?
Posté : 12 juil. 2005, 15:43
par VaN
Erreur : Erreur de syntaxe près de 'SELECT DISTINCT articles.id_article,articles.id_categorie,articl' à la ligne 1
Posté : 12 juil. 2005, 15:48
par ouckileou
$sql = "SELECT DISTINCT a.id_article, a.id_categorie, a.date_entree, a.time_entree, a.nom,a.first,
t.id_texte, t.id_article, t.date, t.date_entree, t.titre,t.texte, a.date AS date_a
FROM articles a, textes t
WHERE articles.id_article=textes.id_article
AND id_categorie='$cat'
AND first='1'
ORDER BY date_a DESC";
un truc sympa ça peut-être de la couper, pour qu'elle tienne sur la largeur de l'écran
moi j'ai un tout petit écran avec ue petite résolution

pour réduire : utilise des alias pour les tables
Posté : 12 juil. 2005, 15:52
par ouckileou
je ne sais pas si c'est l'erreur mais à mon avis tu ne peux pas utiliser le DISTINCT si tu sélectionnes aussi le texte des paragraphes, puisque chaque ligne sera différente
si j'ai bien compris ta structure et la requête...
Posté : 12 juil. 2005, 15:54
par VaN
meme probleme, il m'affiche N fois l'article si l'article contient N paragraphes.
oui mais la je fait mon distinct uniquement sur l'id_article non ?
Posté : 12 juil. 2005, 15:57
par mere-teresa
Et group by ?
Posté : 12 juil. 2005, 15:57
par ouckileou
non, le DISTINCT se fait sur toute la ligne
Posté : 12 juil. 2005, 15:59
par VaN
a utiliser de quelle maniere ?
WHERE ... GROUP BY id_article ?
Posté : 12 juil. 2005, 16:01
par mere-teresa
Que veux tu ?
Avoir tous les articles ?
Avoir tous les paragraphes ?
Si tu veux tous les articles, teste le GROUP BY idarticles...