Jointure interne à la même table en utilisant la position du filtre
P粉278379495
P粉278379495 2024-02-03 18:57:36
0
2
469

Merci de m'avoir aidé, j'apprends encore SQL. J'ai une table principale appelée JEDI et j'essaie d'obtenir des informations spécifiques sur l'utilisation des conditions Inner JOIN et Where. Plus précisément, je souhaite obtenir le nombre de JEDI qui ont visité une planète spécifique entre des dates spécifiques et leur niveau.

Je souhaite ensuite filtrer en utilisant un Inner JOIN sur la même table et me montrer uniquement les résultats pour les JEDI qui ont plus d'un padawan sur cette planète particulière. Je pense que la deuxième condition me déstabilise. J'ai collé le code que j'ai utilisé et l'exemple de tableau de données

Mon résultat devrait juste être 2, Maître Obi-Wan est le seul à répondre aux critères

SELECT COUNT(jedi.jedi_id),jedi.rank_id
FROM jedi
WHERE jedi.date >='2022-01-01' AND jedi.date <='2022-06-31' AND jedi.planet='Tatoine'
INNER JOIN jedi ON jedi.jedi_id WHERE COUNT(jedi.padawan)>=2
GROUP BY jedi.rank_id
P粉278379495
P粉278379495

répondre à tous(2)
P粉878510551

Tout d'abord, vous devez regrouper les colonnes et utiliser HAVING COUNT pour compter les valeurs en double.

SELECT COUNT(jedi.jedi_id),jedi.rank_id
FROM jedi
WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' 
                                     AND jedi.planet='Tatoine'
GROUP BY jedi.jedi_id, jedi.rank_id
HAVING COUNT(jedi.jedi_id) > 1

Remarque : Cette fonctionnalité ne fonctionne que pour chaque jedi_id 具有唯一值 jedi.padawan. Cette requête convient à ces scénarios.

Cependant, vous pouvez calculer une jedi.padawan 的条件来改进查询,以便每个 jedi.jedi_idjedi.padawan valeur/code> unique en en ajoutant une autre qui ne sera pas incluse

SELECT COUNT(jedi.jedi_id),jedi.rank_id
FROM jedi
WHERE jedi.date BETWEEN '2022-01-01' AND '2022-06-31' 
                                     AND jedi.planet='Tatoine'
GROUP BY jedi.jedi_id, jedi.rank_id
HAVING COUNT(jedi.jedi_id) > 1 AND
       COUNT (DISTINCT jedi.padawan) > 1
P粉248602298

Vous pouvez remplacer ceci par must INNER JOIN jedi ON jedi.jedi_id WHERE COUNT(jedi.padawan)>=2

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal