J'ai deux requêtes SQL.
Dans l'une, je cherche combien de villes se trouvent dans chaque pays et filtrez tous ceux avec moins de 6 villes. P>
Dans la seconde, je recherche la quantité de population dans la capitale et filtre tous les ceux qui ont moins de 500 000 habitants. P>
Le résultat que je cherche cherche tous les pays avec plus de 6 villes de la base de données et moins de 500 000 habitants, car ce sont des tailles différentes que je ne peux pas sembler pour les unir p> Je voulais le faire à la fois dans le même comme p> mais qui montre le compteur pour villes comme une seule. la capitale. p> merci p> p>
4 Réponses :
semble que vous ne recherchez pas dans la requête que vous avez essayé
Un joint doit faire le travail:
Vous êtes une adhésion externe, car vous êtes également intéressé par les pays qui n'ont pas de villes? Mais de ces zéro villes, plus de cinq ans doivent avoir plus de 50000 habitants? Ne vous joignez pas externe lorsque vous n'êtes pas obligé. Et lorsque vous devez, veillez à mettre des critères de jointure dans la clause sur code>, pas dans où code>. (Votre où la clause code> rend votre externe Rejoignez une simple jointure intérieure, car les enregistrements joints extérieurs ont une population null.)
Voici une requête qui peut fonctionner. Faites attention au fait que vous mentionnez > 500000 code> qui est plus grand que. Alors assurez-vous que ce dont vous avez besoin est en fait moins. select c.name,
cyCapital.name as capital,
cyCapital.population as capPop,
count(cy.*) cities
from country c
inner join city cy
on c.code = cy.country
and cy.population < 500000
left join city cyCapital
on c.code = cyCapital.country
and c.capital = cyCapital.name
group by c.name,
cyCapital.name as capital,
cyCapital.population as capPop
having count(cy.*) > 5
pays avec plus de six villes et moins de 500 000 habitants:
select c.code from country c on ci.country = c.code join city ci group by c.code having count(*) > 6 and count(case when c.capital = ci.name and ci.population < 500000 then 1 end) = 1;
Pourriez-vous montrer le schéma des tables de pays et des tables de ville et des exemples de données?
Je suis un peu confus sur quel est votre objectif. Si vous filtrez par nombre d'habitants dans la capitale b> Comment la requête afficherait-elle une autre ville (à moins que ce soit bien sûr de nouvelles capitales) pourriez-vous s'il vous plaît clarifier?
@Jorge Le résultat final que je cherche est le pays, la quantité de villes dans ce pays, capitale de ce pays, population de capitaux mais seulement si les villes sont supérieures à 5 et que la population est inférieure à 500 000
@kristech je ne suis pas sûr de ce que vous me demandez, mais je vais essayer de vous montrer ce que je reçois dans la première requête le résultat que je reçois est Nom états_in_country Italie 54 Ethiopie 10 Dans la deuxième réputation Population de capital Monaco Monaco 1234 Saint-Siège Vatican City 392
De plus, votre base de données est-elle mysql ou oracle? Vous avez marqué les deux
@Jorge Oracle SQL Developer, j'ai utilisé l'étiquette Recommandations Stackoverflow
Salut @Tuliodnw a fait l'une des réponses fournies pour vous aider? Si tel est le cas, veuillez envisager de le faire (celui qui a fonctionné mieux pour vous) comme accepté. Vous le faites en cliquant sur l'icône V à gauche de la réponse choisie.
@Jorge, pas encore. Voici la carte de la base de données. imgur.com/a/biu2uno J'ai essayé de chercher à se joindre à l'intérieur mais n'a pas eu de chance.
Salut là-bas, alors je suis bonne chose à faire, il est donc de fournir une exemple de données de votre base de données (juste quelques lignes des deux tables) et de cet exemple quel serait le résultat dont vous avez besoin. Cela vous aidera à clarifier beaucoup votre question et nous pourrons vous répondre plus précisément. Jetez un oeil à ce fil sur la manière de configurer un exemple de données: meta.stackoverflow.com/a/271056/460557