2016-04-14 23 views
1

Ich versuche, die Summe der Populationen aller Städte abzufragen, wo der Kontinent "Asien" ist. Die beiden Tabellen Stadt und Land sind wie folgt,Einfache innere Verbindung funktioniert nicht

city - id, countrycode, name population 
country - code, name, continent, population 

Hier ist meine Frage

SELECT SUM(POPULATION) FROM COUNTRY CITY 
JOIN ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE CONTINENT = "Asia"; 

Dies funktioniert nicht. Was mache ich falsch. Ich bin neu in SQL.

Antwort

3

Es funktioniert nicht, weil die Art, wie Sie es geschrieben haben CITY wird als Tabelle Alias ​​für COUNTRY interpretiert. Darüber hinaus sieht es so aus, als ob Sie in jeder Tabelle eine POPULATION-Spalte haben, sodass Sie sie aufheben müssen. Lassen Sie mich die Abfrage für Sie umschreiben:

SELECT SUM(CITY.POPULATION) 
FROM COUNTRY 
JOIN CITY 
ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE COUNTRY.CONTINENT = "Asia"; 
+0

Ja, das funktioniert. Vielen Dank. Hab es jetzt verstanden. – Zeus

+0

Auch "Asia" hat nicht funktioniert, "Asia" hat keine Ahnung warum. Ich bin neu in SQL. Beide sind VARCHAR2 – Zeus

+0

Hmm. Sowohl einfache als auch doppelte Anführungszeichen funktionieren für mich in MySQL. Verwenden Sie etwas anderes als MySQL? – Asaph

1

MySQL JOIN syntax manual

SELECT SUM(COUNTRY.POPULATION) 
FROM COUNTRY 
JOIN CITY 
ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE CONTINENT = "Asia"; 
+0

Wenn ich dies ausführen, ist die Fehlermeldung, die ich bekomme, "SELECT SUM (BEVÖLKERUNG) * FEHLER bei Zeile 1: ORA-00918: Spalte zweideutig definiert" – Zeus

+0

@ Zeus Siehe [meine Antwort] (http: // stackoverflow .com/a/36636048/166339), die diese Fehlermeldung auflöst. – Asaph

+0

jetzt behoben, dank @Zeus –

1

Die Bedürfnisse JOIN zwischen den beiden Tabellennamen gehen:

SELECT SUM(CITY.POPULATION) FROM COUNTRY INNER JOIN CITY 
ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE CONTINENT = "Asia"; 
+0

bekomme ich folgende Fehler dieses 'SELECT SUM der laufenden (BEVÖLKERUNG) * FEHLER in Zeile 1: ORA-00918: Spalte zweideutig definiert' – Zeus

+0

@Zeus See [meine Antwort] (http: //stackoverflow.com/a/36636048/166339), die diese Fehlermeldung behebt. – Asaph