Page 1 sur 1

probleme requete imbriquée

Posté : 11 juil. 2006, 15:15
par konjiki
salut, je voudrai compter le nombre d'id dans la table session où les level de la table users sont egales à 6666666. il y a relation entre les tables sessions et users. J'ai essayé comme c-dessous mais il me donne une erreure. Merci de votre aide
SELECT count( sessions.id ) as nb_id
			FROM sessions
			INNER JOIN users ON users.id = sessions.user_id
			WHERE users.level = (
			SELECT level
			FROM users
			WHERE level = "6666666" )
			GROUP BY level

Posté : 11 juil. 2006, 15:31
par ouckileou
Requêtes imbriquées dispo à partir de la version 4.1

Quelle est ta version

Posté : 11 juil. 2006, 15:33
par konjiki
MySQL 4.1.12

Posté : 11 juil. 2006, 15:41
par ouckileou
Tu te compliques bien la vie on dirait, pourquoi faire une requête au lieu d'appliquer directement la condition ?

Code : Tout sélectionner

SELECT count( sessions.id ) as nb_id FROM sessions INNER JOIN users ON users.id = sessions.user_id WHERE users.level = "6666666"

Posté : 11 juil. 2006, 15:47
par konjiki
c'est pas bon, le resultat devrai etre 12 et il m'affiche 62 :shock:
j'ai essayé ça
SELECT * FROM sessions
            INNER JOIN users ON users.id = sessions.user_id
            WHERE users.level = "6666666" 
et maintenant la table est toute zarb, j'ai plein de doublons...

Posté : 11 juil. 2006, 15:48
par ouckileou
File la structure détaillée de tes tables

Posté : 11 juil. 2006, 15:57
par konjiki
comment on peut faire pour un affichage propre de la table dans le forum parce là c'est le bordel quand je colle , j'ai deja vu mais j'y arrive pas :?
sinon pour sessions

Champ Type Interclassement Attributs Null Défaut
id varchar(20) latin1_swedish_ci Non
user_id int(6) Non 0
ip varchar(9) latin1_swedish_ci Non
lastseen timestamp ON UPDATE CURRENT_TIMESTAMP Non TIMESTAMP

pour users

Champ Type Interclassement Attributs Null Défaut
id int(6) Non auto_increment
level int(20) UNSIGNED Oui 0

j'essaye de faire mieux la prochaine fois :roll:

Posté : 11 juil. 2006, 16:20
par ouckileou
Ben moi je dirais ça, bizarre que ça ne te donne pas les résultats que tu veux

Code : Tout sélectionner

SELECT COUNT( s.id ) AS nb_id FROM sessions AS s INNER JOIN users AS u ON s.user_id = u.id WHERE users.level = 6666666
ou éventuellement :

Code : Tout sélectionner

SELECT s.user_id, COUNT( s.id ) AS nb_id FROM sessions AS s INNER JOIN users AS u ON s.user_id = u.id WHERE users.level = 6666666 GROUP BY s.user_id

Posté : 11 juil. 2006, 16:27
par konjiki
#-o non toujours pas mais peut etre que je me suis mal expliqué, en fait dans la table sessions il y a la liste des gens connectés, moi je veux savoir combien il y a de modérateurs et combien d'autres. On distingue un moderateur par son ''level" (egale à 6666666) qui est dans la table users. D'ou le raprochement de ces 2 tables. J'ai bien compter et le resultat devrait 12 et non 62. penses tu que ça puisse venir du ''inner join"?

Posté : 11 juil. 2006, 16:33
par ouckileou
Les utilisateurs peuvent avoir plusieurs sessions ouvertes ?

Posté : 11 juil. 2006, 16:42
par konjiki
:agenouille: je suis une andouille le resultat n'est certainement pas 12 mais plus 62 :cry: je suis desolé de t'avoir fait perdre ton temps il y avait plusieurs id qui étaient modérateurs et ... j'avais pas vu desolé. Bon je pense que mon probleme est résolu merci

Posté : 11 juil. 2006, 16:47
par ouckileou
:agenouille: je suis une andouille le resultat n'est certainement pas 12 mais plus 62 :cry: je suis desolé de t'avoir fait perdre ton temps il y avait plusieurs id qui étaient modérateurs et ... j'avais pas vu desolé. Bon je pense que mon probleme est résolu merci
Y'a pas de problème et y'a pas de quoi :)