Maison  >  Questions et réponses  >  le corps du texte

Moyen de trouver les jeux vidéo avec le plus d'implication des développeurs (à l'aide d'une requête SQL)

<p>Supposons que nous ayons 3 tables, à savoir les jeux vidéo, les développeurs et les travaux. </p> <p>Dans le tableau des jeux vidéo, nous avons les attributs suivants : </p> <ul> <li>videogameid (clé primaire)</li> <li>Titre</li> <li>Année</li> <li>genre</li> </ul> <p>Ensuite dans le tableau des développeurs, nous avons : </p> <ul> <li>developerid (clé primaire)</li> <li>Nom</li> <li>genre</li> </ul> <p>Ensuite, dans la table workson, nous avons : </p> <ul> <li>videogameid (clés primaires et étrangères)</li> <li>developerid (clés primaires et étrangères)</li> </ul> <p>Ma tentative de code : </p> <pre class="brush:php;toolbar:false;">SELECT MAX(id du jeu vidéo) DEPUIS (SELECT identifiant de jeu vidéo DE travailson GROUPER PAR ID de jeu vidéo AYANT UN COMPTE (ID de développeur DISTINCT)> 5 )videogames_with_most_developers;</pre> <p>Cependant, je n'ai pas réussi à récupérer les réponses avec les titres (principalement parce que je n'ai pas sélectionné de titre), mais c'est parce que je n'arrive pas à faire le lien. </p> <p>Edit : Nous avons quelques exemples de données, dans le tableau des jeux vidéo : </p> <p>Insérer un jeu vidéo (identifiant du jeu vidéo, titre, année, type)</p><p> VALEURS (111, 'World of Warcraft', 2004, 'MMORPG'); Insérer un jeu vidéo (identifiant du jeu vidéo, titre, année, type) VALEURS (112,'StarCraft II',2008,'RTS');</p> <p>Le tableau des développeurs contient : </p> <p>Insérer un développeur (ID de développeur, sexe, nom) valeur(98734,'M','Johnson'); Insérer un développeur (ID de développeur, sexe, nom) valeur(98735,"F","Régina"); Insérer un développeur (ID de développeur, sexe, nom) valeur(98736,"M","Lamar"); </p> <p>La table workson contient : </p> <p>Insérer workson(videogameid,developerid) valeur (111, 98734) ; insérer workson (id du jeu vidéo, ID du développeur) Valeurs (111, 98735) ; insérer workson (id du jeu vidéo, ID du développeur) Valeur (112, 98736);</p> <p>Le résultat attendu devrait être celui intitulé "World of Warcraft", car il compte le plus grand nombre de réalisateurs travaillant sur ce projet, avec un nombre de 2, tandis que le projet intitulé "Starcraft 2" n'a pas le plus grand nombre de développeurs dans cet exemple. données . </p>
P粉768045522P粉768045522412 Il y a quelques jours540

répondre à tous(1)je répondrai

  • P粉158473780

    P粉1584737802023-09-05 12:10:39

    Les colonnes/fonctions d'agrégation (MAX, COUNT, AVG, etc.) sélectionnées dans la requête de sélection seront affichées sous forme de tableau. Dans votre requête :

    SELECT MAX(videogameid) FROM ....

    Seul l'identifiant du jeu vidéo ayant la plus grande valeur sera affiché. Vous avez uniquement sélectionné le id du jeu vidéoavec la plus grande valeur. Dans la deuxième partie de la requête, les identifiants de jeux vidéo travaillant avec plus de 5 développeurs sont sélectionnés. Encore une fois, aucun en-tête de sélection n'est connecté à la requête SQL externe.

    Requête modifiée :

    SELECT videogameid,title
    FROM videogames WHERE videogameid IN
    (SELECT videogameid
    FROM workson
    GROUP BY videogameid
    HAVING COUNT(DISTINCT developerid)>5
    );

    Cette requête affiche l'ID et le titre du jeu vidéo avec plus de 5 développeurs

    Autre requête :

    SELECT COUNT(developerid) AS dev_count,videogameid FROM workson GROUP BY videogameid
    ORDER BY dev_count DESC LIMIT 1;

    Cela montre l'ID du jeu vidéo et le nombre de développeurs pour le jeu vidéo sélectionné avec le plus de développeurs. Pas de titre .

    Si on veut voir le titre :

    SELECT videogameid,title FROM videogames WHERE videogameid IN
    (SELECT videogameid FROM (SELECT COUNT(developerid) AS count,videogameid FROM workson GROUP BY videogameid
    ORDER BY COUNT(developerid) DESC LIMIT 1) AS T);

    Cette requête affiche les titres et les identifiants de jeux vidéo avec le plus de développeurs.

    répondre
    0
  • Annulerrépondre