Petite question requete sql en PHP
16 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Petite question requete sql en PHP
Salut
Voilà j'ai une petite question concernant une requete sql en PHP :
J'ai trois tables contenant des textes de différents types, et trois tables contenant les tags de chaque article.
J'essaye de selectionner les 30 tags les plus utilisé pour créer un nuage. Lors qu'il s'agit de selectionner ses 30 tags pour une des trois tables, c'est assez simple.
ca donne par exemple :
$sqlTags = "SELECT tag, count(*) as iterations
FROM actualites_tags
GROUP BY tag ORDER BY iterations DESC
LIMIT 0, 30";
Le soucis, c'est que je souhaite également faire la même chose, mais sur les trois tables en même temps, est-ce faisable ?
J'ai essayé en faisant une jointure mais evidemment ce n'est pas du tout le résultat attendu :
$sqlTags = "SELECT a.tag, b.tag, c.tag, count(*) as interations
FROM dossiers_tags a, actualites_tags b, fichprat_tags c
GROUP BY a.tag, b.tag, c.tag ORDER BY interations DESC
LIMIT 0, 30";
En fait, ca serait de faire en sorte que les tables soient "collées" et qu'il fasse le tri parmi les trois tables en même temps !
Vous avez une piste ?
merci d'avance!
Voilà j'ai une petite question concernant une requete sql en PHP :
J'ai trois tables contenant des textes de différents types, et trois tables contenant les tags de chaque article.
J'essaye de selectionner les 30 tags les plus utilisé pour créer un nuage. Lors qu'il s'agit de selectionner ses 30 tags pour une des trois tables, c'est assez simple.
ca donne par exemple :
$sqlTags = "SELECT tag, count(*) as iterations
FROM actualites_tags
GROUP BY tag ORDER BY iterations DESC
LIMIT 0, 30";
Le soucis, c'est que je souhaite également faire la même chose, mais sur les trois tables en même temps, est-ce faisable ?
J'ai essayé en faisant une jointure mais evidemment ce n'est pas du tout le résultat attendu :
$sqlTags = "SELECT a.tag, b.tag, c.tag, count(*) as interations
FROM dossiers_tags a, actualites_tags b, fichprat_tags c
GROUP BY a.tag, b.tag, c.tag ORDER BY interations DESC
LIMIT 0, 30";
En fait, ca serait de faire en sorte que les tables soient "collées" et qu'il fasse le tri parmi les trois tables en même temps !
Vous avez une piste ?
merci d'avance!
Si tous les tags sont différents :
Si le même tags est présent dans 2 tables, tu auras 2 lignes.
- Code: Tout sélectionner
SELECT tag, count(*) as iterations
FROM actualites_tags
GROUP BY tag
union
SELECT tag, count(*)
FROM dossiers_tags
GROUP BY tag
union
SELECT tag, count(*)
FROM fichprat_tags
GROUP BY tag
order by iterations desc
Si le même tags est présent dans 2 tables, tu auras 2 lignes.
-

Joe Le Mort - WRInaute impliqué

- Messages: 255
- Inscription: Mar Aoû 08, 2006 14:13
eessaye de mettre tes résultats séparés dans des tableaux PHP et tu les regroupe dans un seul.
Apres tu joues sur les fonctions array (pour les trier et ordonner) pour ton nuage
Apres tu joues sur les fonctions array (pour les trier et ordonner) pour ton nuage
Oui effectivement,
Alors ca peut donner qqchose dans le genre :
Alors ca peut donner qqchose dans le genre :
SELECT tag, sum(iterations) as iterations
FROM (
SELECT tag, count(*) as iterations
FROM actualites_tags
GROUP BY tag
UNION
SELECT tag, count(*) as iterations
FROM dossiers_tags
GROUP BY tag
UNION
SELECT tag, count(*) as iterations
FROM fichprat_tags
GROUP BY tag
)
GROUP BY tag
ORDER BY iterations DESC
Salut,
héhé merci pour tous vos conseils, vous êtes vraiment sympas !
J'ai donc abouti grace à vos conseils à une requete qui fonctionne au poil :
Mais j'ai encore un petit soucis
J'aimerai pour chaque ligne retournée savoir si il s'agit d'une fiche pratique , d'une actu ou d'un dossier (pour pouvoir rediriger vers la bonne rubrique ensuite ).
Comme vous pouvez le voir, j'ai essayé d'identifier les ID différemment selon la "sous requete" : b.id AS actualite_id et ensuite dans la boucle, je vérifie le quel de actualite_id, dossier_id ou fichprat_id n'est pas null pour pouvoir trouver dans quelle rubrique se trouve le résultat.
Malheureusement ca ne fonctionne pas, et quelque soit la provenance de la ligne, c'est le "actualite_id" qui est pris en compte
.
Vous auriez une piste ?
merci d'avance !
héhé merci pour tous vos conseils, vous êtes vraiment sympas !
J'ai donc abouti grace à vos conseils à une requete qui fonctionne au poil :
- Code: Tout sélectionner
"(SELECT b.id AS actualite_id, b.titre, b.date, b.texte
FROM actualites_tags a, actualites_textes b
WHERE a.actualite_id=b.id
AND (a.tag IN (" . $tagsReady . "))
GROUP BY b.id
HAVING COUNT(b.id)=" . $i . ")
UNION ALL
(SELECT b.id AS dossier_id, b.titre, b.date
FROM dossiers_tags a, dossiers_proprietes b
WHERE a.dossier_id=b.id
AND (a.tag IN (" . $tagsReady . "))
GROUP BY b.id
HAVING COUNT(b.id)=" . $i . ")
UNION ALL
(SELECT b.id AS fichprat_id, b.titre, b.date
FROM fichprat_tags a, fichprat_proprietes b
WHERE a.fichprat_id=b.id
AND (a.tag IN (" . $tagsReady . "))
GROUP BY b.id
HAVING COUNT(b.id)=" . $i . ")
limit 0, 30";
Mais j'ai encore un petit soucis
J'aimerai pour chaque ligne retournée savoir si il s'agit d'une fiche pratique , d'une actu ou d'un dossier (pour pouvoir rediriger vers la bonne rubrique ensuite ).
Comme vous pouvez le voir, j'ai essayé d'identifier les ID différemment selon la "sous requete" : b.id AS actualite_id et ensuite dans la boucle, je vérifie le quel de actualite_id, dossier_id ou fichprat_id n'est pas null pour pouvoir trouver dans quelle rubrique se trouve le résultat.
Malheureusement ca ne fonctionne pas, et quelque soit la provenance de la ligne, c'est le "actualite_id" qui est pris en compte
Vous auriez une piste ?
merci d'avance !
vin-moi a écrit:Comme vous pouvez le voir, j'ai essayé d'identifier les ID différemment selon la "sous requete" : b.id AS actualite_id et ensuite dans la boucle, je vérifie le quel de actualite_id, dossier_id ou fichprat_id n'est pas null pour pouvoir trouver dans quelle rubrique se trouve le résultat.
Malheureusement ca ne fonctionne pas, et quelque soit la provenance de la ligne, c'est le "actualite_id" qui est pris en compte.
Tu ajoute un élément dans chacunes des requetes, pour identifier ce que tu récupère :
SELECT "actu" as quoi, b.id AS actualite_id, b.titre, b.date, b.texte
(etc)
-

webmasterlamogere - WRInaute accro

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
Joe Le Mort a écrit:eessaye de mettre tes résultats séparés dans des tableaux PHP et tu les regroupe dans un seul.
Apres tu joues sur les fonctions array (pour les trier et ordonner) pour ton nuage
Le plus simple est de faire les 3 requêtes séparées, de tout mettre dans un tableau et de trier ensuite ce tableau avec un petit sort. C'est facile a coder, à maintenir et surement plus performant en temps de traitement.
-

webmasterlamogere - WRInaute accro

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
tu mets ton critère de tri comme première colonne de ton tableau et tu utilises
rsort pour trier en descendant.
rsort pour trier en descendant.
16 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Nombre moyen de mots par requête : statistiques AOL Août 2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006
- Google Deskbar : la recherche sur votre bureau
- Informations sur l'infrastructure technique de Google
- Google indexe le Flash
- Une icone pour afficher des plans dans les résultats de Google (Plus Box)
- 2 nouvelles pages sur WebRankInfo
- La presse parle de WebRankInfo...
- Requête SQL petite question
- Requete sql complexe en php
- petite requete sql de "reparation" !
- requête sql en php pour mysql
- petite aide pour petit probleme sql et php ( de variable
- Exportation d'une requete SQL vers Excel via PHP
- problème requête SQL dans une fonction PHP
- Verifier si une requete SQL n'est pas vide en PHP
- pb sur requete sql et champs qui correspond 1 fonction php
Consultez la description détaillée des produits ou services de Google suivants : Gmail Notifier
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum