Requete SQL: Comment additionner plusieurs valeurs dans une table en un minimum [Résolu]

Messages postés
23
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
11 mars 2012
- - Dernière réponse : audiogenic
Messages postés
23
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
11 mars 2012
- 28 févr. 2012 à 19:27
Bonjour, je vous explique plus clairement :
La table:
id - site - affichages
Les entrées:
1 - www.example1.fr/pageX - 12
2 - www.example2.fr/pageZ - 23
3 - www.example1.fr/pageY - 140
4 - www.example1.fr/pageX - 115

Voilà, dans un premier temps, je souhaiterais:
- additionner les valeurs "affichages" WHERE site='www.example1.fr/pageX' en une seule requête si possible...

Dans un deuxième temps, je souhaiterais:
- additionner toutes les valeurs "affichages" WHERE site='www.example1.fr' peu importe la page...additionner les entrées 1, 3, et 4... avec toujours une seule requete si possible...






Mon site en cours de développement
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
55
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
2 avril 2012
3
Merci
Si tu fais une requête avec <WHERE site LIKE '%www.example1.fr%'> au lieu de <WHERE site='www.example1.fr'>.

La bdd va retourner un tableau avec toutes les pages de www.example1.fr

Le caractère % permet d'indiquer à MySQL qu'il y a une chaine avant et une chaine après le mot que l'on cherche.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de flasher_13
Messages postés
23
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
11 mars 2012
0
Merci
bon pour la première partie j'ai trouvé ça:
<?
$sql = 'SELECT affichages FROM skyplayer.test WHERE site="www.example1.fr/pageX"';
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
$affichages+=$data['affichages'];
}
echo $affichages;
?>
mais pour la seconde je cherche encore...


Mon site en cours de développement
Commenter la réponse de audiogenic
Messages postés
23
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
11 mars 2012
0
Merci
Parfait, merci beaucoup.

Mon site en cours de développement
Commenter la réponse de audiogenic
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
Salut,

Perso je te recommande très fortement de revoir ta base de données. Clairement, dans ton cas utiliser 3 tables différentes est bien plus approprié :
- Une table pour les host.
- Une table pour les pages.
- Une table pour les "affichages " (j'ai pas bien compris ce que tu entends pas affichages mais bon).
À partir de ça, quelques jointures et le tour est joué.
Commenter la réponse de TychoBrahe
Messages postés
23
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
11 mars 2012
0
Merci
En fait, je fais un inventaire de statistiques de sites distants. Le client inclus une de mes pages renvoyant sur :
http://www.monsite.fr/www.sonsite.com
et à partir de l'include je fais un INSERT de tous les paramètres possibles recueillis sur les visiteurs de son site(statistiques,ip,pays,continent,navigateur utilisé, la langue, graphiques...etc...), ainsi que les pages visitées(navigation dans l'arborescence du site du client, pages les plus visitées, moyennes...etc..), bref la totale, comme Xiti mais moins cher ^^.

Alors, la contrainte principale est d'avoir une seule requête pour insérer les données dans la base de données. Pour "affichages" effectivement il sera toujours à "1" lors de l'insertion, mais il me faudra tout de même les additionner en fonction des host et/ou des pages ou autre pour le traitement des statistiques.

Faire plusieurs table...Oui, pourquoi pas ça sera vraiment plus "lisible" et "gérable" mais comme je compte dupliquer cette partie sur tout mes sites web, j'imagine mal faire un insert sur 5 à 10 tables, au niveau de l'optimisation je ne sais pas la solution la plus rapide/optimisée.


Mon site en cours de développement
Commenter la réponse de audiogenic
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
Cadeau :

Tu remarqueras qu'il n'y a pas de champ contenant le nombre de visites, c'est tout à fait normal, le but est de le calculer en comptant le nombre d'entrées dans la table visit. Pourquoi ça ? Parce qu'ainsi on peux obtenir le nombre de visites les X derniers jours et autres dérivés ayant le temps en paramètre, permettant ainsi des statistiques avancées, ce qui est totalement impossible si on garde des nombres dans des champs.

J'insiste sur le fait qu'avec cette solution on a bien une seule requête (un insert) qui est effectuées à chaque fois qu'un visiteur passe sur ta redirection, le seul moment où il est possible d'avoir pas mal de requêtes c'est lors de la fabrications des statistiques. Pour contrer cet effet, tu peux mettre en place toutes sortes de caches (c'est fou tout ce qu'on a inventé à ce niveau), donc ne t'en fais pas. Concentre toi donc sur la propreté du projet.
Commenter la réponse de TychoBrahe
Messages postés
23
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
11 mars 2012
0
Merci
Oh là j'avais que je suis très heureusement surpris merci beaucoup si je gagne beaucoup une fois le projet terminé je te recontacterais pour te faire un don. Merci beaucoup, beaucoup.

Mon site en cours de développement
Commenter la réponse de audiogenic