Le but de ma requête est de renvoyer le nom du pays et son chef d’État s’il est dirigé par un nom commençant par A et que la capitale du pays compte plus de 100 000 habitants utilisant une requête imbriquée.
Voici ma requête:
SELECT country.name as country,
(SELECT country.headofstate
from country
where country.headofstate like 'A%')
from country, city
where city.population > 100000;
J'ai essayé de l'inverser, de le placer dans la clause where, etc. Je ne reçois pas de requêtes imbriquées. Je viens de recevoir des erreurs en retour, comme "la sous-requête renvoie plus d'une ligne" et autres. Si quelqu'un pouvait m'aider avec la façon de le commander et expliquer pourquoi il devait l'être, ce serait génial.
Si cela doit être "imbriqué", ce serait une façon de faire votre travail:
SELECT o.name AS country, o.headofstate
FROM country o
WHERE o.headofstate like 'A%'
AND (
SELECT i.population
FROM city i
WHERE i.id = o.capital
) > 100000
Une JOIN
serait cependant plus efficace qu'une sous-requête corrélée. Peut-être que celui qui vous a jamais confié cette tâche n’est pas à la hauteur de la situation?
Vous devez join
les deux tables, puis filtrer le résultat dans la clause where
:
SELECT country.name as country, country.headofstate
from country
inner join city on city.id = country.capital
where city.population > 100000
and country.headofstate like 'A%'
Selon moi, le seul endroit pour une requête imbriquée serait dans la clause WHERE, donc par exemple.
SELECT country.name, country.headofstate
FROM country
WHERE country.headofstate LIKE 'A%' AND
country.id in (SELECT country_id FROM city WHERE population > 100000)
En dehors de cela, je suis d'accord avec Adrian sur: pourquoi diable devriez-vous utiliser des requêtes imbriquées?
La requête ci-dessous devrait vous aider à réaliser ce que vous voulez.
select scountry, headofstate from data
where data.scountry like 'a%'and ttlppl>=100000