Plusieurs COUNT dans une même requète

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 1 oct. 2015 à 11:08
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 10 déc. 2015 à 12:37
Bonjour
J'ai une requète qui vérifie si le nom existe déjà dans une table, je souhaiterai que cette vérification se fasse également dans deux tables.
Pouvez-vous m'aider s'ils vous plait, voici ma requète pour la vérification dans 1 table qui est fonctionnelle.
Alors comment rajouter une autre table, j'avais déjà essayé plusieurs façon mais en vain.
Dans l'autre table "adherent" et les champs "nom_adherent" et "prenom_adherent"
Merci
		$sql = "SELECT COUNT(nom_ami) as NB
				FROM  tb_ami
				WHERE nom_ami = '$this->nom_ami'
				AND prenom_ami = '$this->prenom_ami'
				GROUP BY 'nom_ami'";
		$requete = $this->bdd->prepare($sql);
		$requete->execute();
		$resultat = $requete->fetchAll();
		return isset($resultat[0]['NB']) ? $resultat[0]['NB'] : 0;
A voir également:

5 réponses

DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
7 oct. 2015 à 12:52
Bonjour papyclic


Si vous avez des tables reliées entre elles, il est recommandé d'utiliser des clés primaires.

Exemple
Tables tb_ami
id_ami, nom_ami, prenom_ami, ....

tb_adherent
id_adherent, id_ami, ....


Dans le cas de jointure, pas la peine de remettre nom, prenom.
Pour faire une requête sql reliant les deux tables il faut indiquer le lien qui les relie

exemple
Select   tb_adherent, tb_ami, tb_nom
from tb_adherent, tb_ami
where tb_adherent,.id_ami = tb_ami.id_ami
1
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
1 oct. 2015 à 11:19
Bonjour,

il faudrait que je sache comment vos tables sont reliées entre elles.

Si vous vous utiliser la valeur du Count il faut utiliser HAVING à la place de WHERE ou AND
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
1 oct. 2015 à 12:54
Bonjour
Mes 2 tables ne sont pas relié entre elles en fait.
Lorsque je rajoute un membre la condition s'effectue bien si il y a un membre du même nom.
Mais je voudrais que cette condition s'effectue également avec une autre table, une jointure en fait.
		$sql = "SELECT COUNT(nom_ami) as NB
				FROM  tb_ami
				WHERE nom_ami = '$this->nom_ami'
				AND prenom_ami = '$this->prenom_ami'
				GROUP BY 'nom_ami'";
		$requete = $this->bdd->prepare($sql);
		$requete->execute();
		$resultat = $requete->fetchAll();
		return isset($resultat[0]['NB']) ? $resultat[0]['NB'] : 0;

Alors moi j'avais essayé un truc du genre, met en vain.
		$sql = "SELECT
		(SELECT COUNT(nom_ami)FROM tb_ami) as NB,
		(SELECT COUNT(nom)FROM tb_adherent) as NB2,
				WHERE nom_ami = '$this->nom_ami'
				AND prenom_ami = '$this->prenom_ami'
				AND nom = '$this->nom'
				AND prenom = '$this->prenom'
				GROUP BY 'nom_ami, nom'";		
		$requete = $this->bdd->prepare($sql);
		$requete->execute();
		$resultat = $requete->fetchAll();
		return isset($resultat[0]['NB']) ? $resultat[0]['NB'] : 0;
0
Tatanos Messages postés 966 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 26 mai 2016 156
19 oct. 2015 à 16:24
Salut,

Avec deux sous requêtes tu peux t'en sortir sans jointure :

SELECT (T1.NB1+T2.NB2) as NB
FROM
(
	SELECT COUNT(nom_ami) as NB1
	FROM  tb_ami
	WHERE nom_ami = '$this->nom_ami'
	AND prenom_ami = '$this->prenom_ami'
) AS T1,
(
	SELECT COUNT(nom_adherent) as NB2
	FROM  tb_adherent
	WHERE nom_adherent = '$this->nom'
	AND prenom_adherent = '$this->prenom'
) AS T2
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
19 oct. 2015 à 22:26
Je n'ai jamais fais ce genre de requête.

Il faut tester pour voir si çà marche.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
10 déc. 2015 à 12:37
Merci pour tout.
0