Je possède plusieurs tables et je les ai combinées à l'aide de "Join" ( Code donné ci-dessous Strong>), je dispose maintenant d'une table combinée qui me donne un nombre correct de réponses pour un utilisateur particulier et pour un quiz particulier (donné ci-dessous): Je veux Voici mon code lame: P> < Pré> xxx pré> Voici ma fonction de contrôleur: p>
3 Réponses :
Essayez ce bro
Merci de répondre, mais il y a une erreur: illuminate \ base de données \ QueryException sqlstate [42000]: erreur de syntaxe ou violation d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL;
désolé bro vous devriez supprimer les réponses dans SELECT i Mise à jour de la réponse Vérifiez-le bro
Si je vois cela correctement, vous utilisez la variable "Quizzes.qname" dans la requête SELECT. Mais je ne vois que le nom dans la table des quizzes. Essayez ceci: } p> Je l'ai réglé à nouveau après votre commentaire. P> p>
Comme il y a plusieurs fenêtres ouvertes, j'avais prise de capture d'écran à partir de la mauvaise table de base de données, j'ai maintenant remplacé la table des questionnaires avec la bonne, s'il vous plaît voir. J'utilise QName dans le programme en réalité.
Monsieur, même résultat que plus tôt, rien ne s'est passé. J'ai remplacé ma fonction avec le vôtre.
Dernière tentative: je viens de remarquer que j'ai mal compris votre question. Vous devrez peut-être regrouper toutes les colonnes sauf le score. J'ai encore ajusté mon code et j'espère que cela fonctionne maintenant: D
Je pense que le groupeby ne correspond pas à cela
Pourquoi pas? Je ne peux pas le tester maintenant. C'est pourquoi je pensais que c'était mon dernier essai.
requête SQL pour obtenir les résultats souhaités serait donc je suppose avec le constructeur de requêtes Laravel que la requête pourrait être écrite comme p> Cela devrait vous donner le résumé des données souhaité. P> PS: Vérifiez et corrigez la syntaxe de Builder de Query Laravel pour Groupby, je ne suis pas sûr de cela. P> P>
@Daljitsingh a mis à jour la réponse pour fournir une déclaration de constructeur SQL brut et équivalente de Query Laravel. Vérifiez si cela vous donne la sortie souhaitée
Non monsieur son ne fonctionne pas :-( ... voici l'erreur: illuminate \ base de données \ QueryException sqlstate [42000]: erreur de syntaxe ou violation d'accès: 1055 'QUIZMASTER.USERS.NAME' n'est pas en groupe par (SQL: Sélectionner Résultats.Quision.Id comme quizid, résultats.user_id comme userid, users.nom comme nominame, Quizzes.qname comme QuizName, Quizzes.Id comme quizid, comptez (réponses.is_correction) comme score à partir de Résultats CODE> Join Inner < Code> Utilisateurs code> sur
résultats code>.
user_id code> =
utilisateurs code>.
ID code> joint interne
quiz < / code> sur
résultats code>.
quiz_id code> =
quiz code>.
id code> joint interne
réponses code> sur
résultats code>.
réponse_id code> =
réponses code>.
id code> groupe par
résultats code>.
Quiz_id code>
S'il vous plaît aidez-moi .. @ donkarnash
@Daljitsingh pls examine la requête SQL brute et la relevé de base de la requête que j'ai posté incluent les résultats .Quiz_ID code> ainsi que
résultats.User_id code> dans le groupe par. L'erreur indique que
résultats.user_id code> est manquant (non inclus) dans la Grosseby - C'est pourquoi vous obtenez l'erreur. Pls essayer la déclaration fournie et laissez-moi savoir
@DalJitsingh pour la sortie que vous désirez, MySQL a besoin de regrouper les enregistrements des résultats d'un quiz (Résultats.Quz_ID) en outre pour calculer le score de chaque utilisateur, MySQL doit être club (agrégat) les valeurs de is_correct Code> Pour chaque utilisateur, c'est-à-dire que MySQL a besoin de grouper les enregistrements d'abord par
résultats.Quiz_ID code>, puis par
résultats.User_id code>. Vous avez donc besoin des deux dans la clause de groupeby. J'espère que cela devient clair maintenant.
Je ne vois aucune raison pour laquelle ce qui précède ne devrait pas fonctionner et vous donner la sortie souhaitée. Cependant, si cela ne fonctionne toujours pas pour vous, PLS Post le schéma (structure de la table) SQL.
@Daljitsingh a-t-il fonctionné pour vous? Puisque vous n'avez pas répondu d'erreurs, je suppose qu'il a fonctionné
Non monsieur, il ne fonctionne pas. Comme je suis hors de la ville, c'est pourquoi n'a pas pu répondre. 🙏
Quelle est l'erreur que vous obtenez? Pouvez-vous s'il vous plaît poster le SQL du schéma de la table?
ERREUR: Illuminate \ Database \ QueryException SQLState [42000]: Erreur de syntaxe ou violation d'accès: 1055 'QuizMaster.USers.name' N'est pas en groupe par (SQL: Sélectionner des résultats.Quz_id comme un quizid, résultats.Auzid_id comme userid, utilisateurs. Nom comme nom d'utilisateur, Quizzes.Qname En tant que QuizName, Quizzes.Id en tant que quizid, comptez (réponses.is_correct) comme score à partir de résultats interne rejoindre les utilisateurs sur les résultats.User_id = users.Id Inner Rejoignez quiz sur les résultats.Quiz_id = Quizzes.ID Réponses sur les résultats.Aswer_id = réponses.ID Groupe par résultats.Quiz_ID
À partir de l'erreur, il semble que vous n'utilisez toujours que les résultats .Quiz_id code> dans groupby et non compris
résultats.user_id code>. Pls poster la déclaration complète de la requête et Schema SQL pour que je puisse comprendre où l'erreur se produit.
Pouvez-vous me montrer quelques données de la base de données
Ouais, j'ai ajouté 3 autres captures d'écran de tables, s'il vous plaît voir.
S'il vous plaît partager vos tentatives de débogage