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

audiogenic 23 Messages postés jeudi 23 février 2012Date d'inscription 11 mars 2012 Dernière intervention - 27 févr. 2012 à 17:30 - Dernière réponse : audiogenic 23 Messages postés jeudi 23 février 2012Date d'inscription 11 mars 2012 Dernière intervention
- 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 

Votre réponse

7 réponses

Meilleure réponse
flasher_13 55 Messages postés mercredi 2 février 2005Date d'inscription 2 avril 2012 Dernière intervention - 27 févr. 2012 à 18:16
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.

Merci flasher_13 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de flasher_13
audiogenic 23 Messages postés jeudi 23 février 2012Date d'inscription 11 mars 2012 Dernière intervention - 27 févr. 2012 à 18:08
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
audiogenic 23 Messages postés jeudi 23 février 2012Date d'inscription 11 mars 2012 Dernière intervention - 27 févr. 2012 à 18:34
0
Merci
Parfait, merci beaucoup.

Mon site en cours de développement
Commenter la réponse de audiogenic
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 27 févr. 2012 à 19:29
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
audiogenic 23 Messages postés jeudi 23 février 2012Date d'inscription 11 mars 2012 Dernière intervention - 28 févr. 2012 à 18:12
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
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 28 févr. 2012 à 19:00
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
audiogenic 23 Messages postés jeudi 23 février 2012Date d'inscription 11 mars 2012 Dernière intervention - 28 févr. 2012 à 19:27
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.