|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
В базе данных world http://downloads.mysql.com/docs/world.sql.zip есть 3 таблицы city, country, countrylanguage. В каждой таблице есть code страны по которому они имеют связь. Как создать сложный запрос: определяющий сколько городов содержится в каждой стране. mysql> SELECT COUNT(*) FROM Country AS Cnt, city WHERE Cnt.code=(SELECT Country.code FROM city Where cnt.code=city.CountryCode ); не работает, как правельно составить запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2020, 08:03 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
А подзапрос-то нах зачем? Сравнивай напрямую. И группировки нету... И неясно, как (если запрос вдруг заработает) определять, какое число к какой стране относится... решение Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2020, 08:23 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina, Спасибо, по делу. Правда выдало ошибку ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Сode = Сity.CountryCode GROUP BY Country.Name' at line 3 А CitiesAmount что за параметр? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2020, 12:53 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Relect, там вроде и ошибиться негде. Проверьте код на опечатки или использование кириллических символов. CitiesAmount - алиас для COUNT(*) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2020, 13:19 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
paver, всё вроде ввожу верно Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 09:29 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 09:34 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina, спасибо, ввёл вручную сработал запрос. Видимо кирилица где-то была. А можно про алиас для count(*) поподробней? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 10:28 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
https://ru.wikipedia.org/wiki/Alias_(SQL) Ну или просто выполни запрос с алиасом и без него, и посмотри на разницу в структуре результирующего запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 10:54 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina, А как в этой же базе выполнить запрос: Найдите страну с площадью большей средней по континенту SELECT Name, SurfaceArea FROM Country WHERE SurfaceArea>AVG(SurfaceArea) GROUP BY Country.Continent); ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 12:18 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Посчитать среднюю в подзапросе (или CTE). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 12:20 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina, спасибо, а подскажите хороший видеокурс по mysql ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 13:42 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Когда я осваивал SQL, видеокурсов не было. А потом они мне вообще никуда не впёрлись. Так что не подскажу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 14:12 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina Посчитать среднюю в подзапросе (или CTE). а как найте страну с площадью большей средней по континенту в подзапросе, если континентов в таблице несколько? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 15:02 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Relect, вот как найти среднюю по континентам нашёл SELECT continent, AVG(SurfaceArea) FROM Country GROUP BY Continent; ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 15:16 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Ну и теперь сравнивай площадь страны и найденное среднее для континента этой страны. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 17:26 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina Ну и теперь сравнивай площадь страны и найденное среднее для континента этой страны. SELECT name, Population FROM city WHERE Population> (SELECT AVG(Population) FROM Country JOIN City ON Contry.code = City.CountryCode GROUP BY Country.Name); Column 'Population' in field list is ambiguous ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2020, 07:36 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Akina А подзапрос-то нах зачем? Сравнивай напрямую. И группировки нету... И неясно, как (если запрос вдруг заработает) определять, какое число к какой стране относится... решение Код: sql 1. 2. 3. 4.
Кстати а просто JOIN без Left и Right как объединяет таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2020, 09:43 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Найдите города столицы тех стран, в которых негосударственный язык составляет более 50% от общего SELECT City.Name, From City, Country, CountryLanguage WHERE City.ID=Country.Capital AND City.CountryCode = Countrylanguage.CountryCode AND Countrylanguage.isOfficial = 'F' AND Countrylanguage.Percentage>50; выдаёт ошибку: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'From City, Country, CountryLanguage WHERE City.ID=Country.Capital AND City.Coun' at line 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2020, 10:44 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Relect, запятую после SELECT City.Name уберите. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2020, 11:42 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
miksoft, спасибо, заработало ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2020, 15:38 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
Relect Akina Ну и теперь сравнивай площадь страны и найденное среднее для континента этой страны. SELECT name, Population FROM city WHERE Population> (SELECT AVG(Population) FROM Country JOIN City ON Contry.code = City.CountryCode GROUP BY Country.Name); ошибка: Column 'Population' in field list is ambiguous и как всё-таки это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2020, 08:22 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
В общем незнаю как добить один вопрос "Найдите города с населением большим среднего по континенту" Вот нахожу среднее население по континентам. SELECT continent, AVG(Population) FROM Country GROUP BY Continent; Вот вроде решение: SELECT A.name, A.Population FROM city AS A WHERE A.Population> (SELECT AVG(B.Population) FROM Country AS B WHERE A.CountryCode=B.code GROUP BY B.Continent); но оно не работает потому что выдаёт Gibraltar (Europe) c населением 27025. В чём причина? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2020, 19:18 |
|
запрос используя связи двух таблиц
|
|||
---|---|---|---|
#18+
А вот ещё интересный запрос: Найдите города в тех странах, в которых государственный язык составляет менее 50% от общего. Решение вроде бы SELECT A.Name FROM City AS A, CountryLanguage AS B WHERE A.CountryCode=B.CountryCode AND B.isOfficial='T' AND B.Percentage<50; однако если взять авганистан, то он хотя и выводиться, но там несколько официальных языков один <50%, другой >50% как тут быть? ещё бы хотелось выводить язык и его % в запросе - я так понимаю через JOIN? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2020, 19:43 |
|
|
start [/forum/topic.php?fid=47&fpage=24&tid=1828693]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 446ms |
0 / 0 |