nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 16:22 (post édité 2 fois)

J'aurai besoin d'un mec qui gère en SQL, je galère un peu pour trouver une requête potable qui ferait ce que je veux.

Voici mes tables (en light):

utilisateurs(num_util, pseudo_util)
questions(num_quest, int_quest)
rep_possibles(num_rp, int_rp, #num_quest)
reponses(#num_util, #num_quest, #num_rp)

En gros on a un questionnaire, pour chaque question (questions) on propose plusieurs réponses (rep_possibles) et la tables reponses permet de savoir qui à répondu quoi à quelle question.

Imaginons que:
Bob répond 2 à la question 1
Bob répond 2 à la question 2

Max répond 2 à la question 1
Max répond 2 à la question 2

Jean Luc répond 1 à la question 1
Jean Luc répond 2 à la question 2

Quand max a répondu 2 à la question 1, je veux pouvoir lui dire que 100% des gens qui ont répondu pareil que lui ont aussi répondu 2 à la question 2

Ou quand Jean Luc a répondu 2 a la question 2 que 66% des gens qui ont répondus pareil que lui ont répondu 2 à la question 1

Et en fait quand je dis 100% et 66% c'est parceque ce sont les plus gros pourcentages trouvés parmis tous les couples questions/réponses. On ne le vois pas dans mes exemples là...

J'espère que c'est assez clair... Je ne trouve pas de solution qui ne serait pas un gouffre niveaux ressources demandées au serveur. Merci à ceux qui se pencheront sur mon problèmeClin d


 

lemonhead


dirigeant

18018 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Vendredi 13 Mars 2009 - 17:12 (post édité 3 fois)

100 * (select count(*) from reponses where num_quest=$question and num_rp=$reponse) / (select count(*) from reponses where num_quest=$question)

Enfin, vaut mieux le faire en plusieur fois (et à faire avant d'écrire la réponse du mec dans la base) :

$qry = mysql_query("select count(*) from reponses where num_quest=$question and num_rp=$reponse");
$a = mysql_result ($qry, 0);
$qry = mysql_query("select count(*) from reponses where num_quest=$question");
$b = mysql_result ($qry, 0);
if ($b == 0) {
       echo "ouf ! j'ai évité de justesse une division par zéro";
}
else {
       echo 100 * $a / $b;
}


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 17:19 (post édité 1 fois)

Merci Lemon mais si je comprend bien là quand max a répondu 2 à la question 1 ça lui a dit que 66% des gens ont répondu pareil que lui à cette question Clin d


 

lemonhead


dirigeant

18018 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Vendredi 13 Mars 2009 - 17:23 (post édité 1 fois)

Nakuni a écrit :
Merci Lemon mais si je comprend bien là quand max a répondu 2 à la question 1 ça lui a dit que 66% des gens ont répondu pareil que lui à cette question Clin d


Choqué

ben non...

$qry = mysql_query("select count(*) from reponses where num_quest=$question and num_rp=$reponse");
$a = mysql_result ($qry, 0);
$a = 1; (ou 2 si t'as déjà écrit sa réponse dans la base, mais dans ce cas tu soustrais 1 et c'est bon)
$qry = mysql_query("select count(*) from reponses where num_quest=$question");
$b = mysql_result ($qry, 0);
$b = 1; (ou 2 bla bla bla)
if ($b == 0) {
       echo "ouf ! j'ai évité de justesse une division par zéro";
}
else {
       echo 100 * $a / $b;
       ==> 100 * 1 / 1 = 100
}

nakuni a écrit :
Quand max a répondu 2 à la question 1, je veux pouvoir lui dire que 100% des gens qui ont répondu pareil que lui ont aussi répondu 2 à la question 2


relis voir cette phrase, c'est rigolo Content . Tu peux toujours dire ça, à moins que personne n'ai répondu à part le mec Content

« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

lemonhead


dirigeant

18018 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Vendredi 13 Mars 2009 - 17:27 (post édité 1 fois)

Mouarf, j'avais pas bien lu 100% de la dernière phrase du premier post Content
Attends, je réfléchis...

EDIT : j'imagine qu'en fait, Jean Luc répond 1 à la question 1 ?


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 17:29 (post édité 1 fois)

lemonhead a écrit :


nakuni a écrit :
Quand max a répondu 2 à la question 1, je veux pouvoir lui dire que 100% des gens qui ont répondu pareil que lui ont aussi répondu 2 à la question 2


relis voir cette phrase, c'est rigolo Content . Tu peux toujours dire ça, à moins que personne n'ai répondu à part le mec Content


Relis toi même sac à merde, c'est pas parceque les autres ont répondu pareil que lui à la question 1 qu'ils ont répondu pareil à la question 2. Je crois pas que t'ai capté, ou alors mon cerveau est complètement en train de fondre (pas impossible j'ai du mal là)

EDIT: tu me rassures Clin d

 

nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 17:31

lemonhead a écrit :

EDIT : j'imagine qu'en fait, Jean Luc répond 1 à la question 1 ?


Euh... oui sorry Razz

 

lemonhead


dirigeant

18018 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Vendredi 13 Mars 2009 - 17:37 (post édité 3 fois)

alors :

select num_rp, count(*) from reponses where num_quest=$question_a_tester group by num_rp

tu obtiens un enregistrement par réponse déjà apparue pour la question à tester, avec dans le premier champ le numéro de réponse, et dans le deuxième champ, le nombre de réponse. Y'a plus qu'à faire le calcul.

EDIT : ouais attends il manque un truc...

en, on veut quoi ? tous les gens qui on répondu la même chose que lui ?
select num_util from reponses where num_quest=$q and num_rp=$r

ensuite on veut quoi, on veut savoir qu'est-ce qu'ils ont répondu à une certaine question, c'est bien ça ?
select num_rp, count(*) from reponses where num_quest=$question_a_tester and num_util in ( select num_util from reponses where num_quest=$question_en_cours and num_rp=$reponse_en_cours )group by num_rp


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 17:42 (post édité 1 fois)

En fait le truc c'est que je veux récupérer la question qui contient le + de réponses identiques par des mecs qui ont répondu pareil à la question initiale.

Donc là ça m'obligerai à tester TOUTES les questions et ça serait super lourd.

Désolé c'est pas très clair...


 

lemonhead


dirigeant

18018 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Vendredi 13 Mars 2009 - 17:45

j'ai édité, ça répond pas à ton problème ?


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 17:54

Bah comme je t'ai dis au tel, si je trouve pas de moyen de le faire en SQL je vais faire une boucle pour exécuter ta requête pour chaque question et gérer ça en php.

Merci pote de vies moches Razz


 

lemonhead


dirigeant

18018 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Vendredi 13 Mars 2009 - 17:55 (post édité 1 fois)

solution assez rapide à mon avis :

select num_quest, num_rp, count(*)
from reponses a
where num_util in ( select num_util
from reponses b
where b.num_quest=$question_en_cours
and b.num_quest=a.num_quest
and b.num_rp=$reponse_en_cours )
group by num_quest, num_rp


après faut gérer le résultat en php (si c'est du php), mais ça devrait être fastoche !
mais en fait, ça revient à lire quasiment toute la table et gérer un tableau Content
mais on s'en fout combien mangent de kiwi ceux qui vont chier 3 fois par jour !!! Content


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

dejune


dirigeant

3122 messages

Dirigeant, Membre, LAN

Vendredi 13 Mars 2009 - 17:58

hs Content
lemon tu te dopeS a quoi pour connaitre tous ca la ?
j ai presque envie de redire ce que disait guz LEMON C EST UN GRAND MALADE ........ Twisted Evil


]viens affronté ma brute si tu l oses!!!
http://dejune.labrute.fr

 

xXx wagnerus xXx sur EU aussi

nakuni


adjoint

11085 messages

Membre, Developpeur, LAN, Retraité, Chef (ED)

Vendredi 13 Mars 2009 - 18:07

lemonhead a écrit :
solution assez rapide à mon avis :

select num_quest, num_rp, count(*)
from reponses a
where num_util in ( select num_util
from reponses b
where b.num_quest=$question_en_cours
and b.num_quest=a.num_quest
and b.num_rp=$reponse_en_cours )
group by num_quest, num_rp


Rapide je sais pas mais ça marche nikel, même pas besoin de réfléchir à quelle requêtre mettre dans ma boucle c'est cool Razz

lemonhead a écrit :

mais en fait, ça revient à lire quasiment toute la table et gérer un tableau Content

J'y ai pensé, mais je suis plus à l'aise avec SQL qu'avec les tableaux (c'est dire!) alors... Tu crois que ça serait moins gourmand comme ça?
lemonhead a écrit :

mais on s'en fout combien mangent de kiwi ceux qui vont chier 3 fois par jour !!! Content

Grille pas mon concept enfoiré Razz

dejune a écrit :
hs Content
lemon tu te dopeS a quoi pour connaitre tous ca la ?
j ai presque envie de redire ce que disait guz LEMON C EST UN GRAND MALADE ........ Twisted Evil


Il a même pas réussi à répondre à ma question initial c'est qu'un dèpe en fait te laisse pas impressionner par 3 lignes d'SQL Razz

 

MriK


4743 messages

Membre, Developpeur, LAN

Vendredi 13 Mars 2009 - 18:53

Z'avez quoi contre les Kiwis ? xD


Life is only a dream.

Liens utiles : Rechercher - Droits d'accès