ОШИБКА 1248 (42000): каждая производная таблица должна иметь свой собственный псевдоним, псевдоним присутствует (внутренний запрос с группой и наличием) - PullRequest
0 голосов
/ 09 июня 2018

Мне нужно выбрать страны, где неофициальные lang-s в два раза больше официальных, + официальные лица 2 +

MYSQL Query:

SELECT c2.countrycode , sum(c2.isOfficial) as isFalse
FROM countrylanguage as c2
 INNER JOIN (
        select c.countrycode , sum(c.isOfficial)as isOffTrue 
        from countrylanguage as c 
        where c.isOfficial='T' 
        group by c.countrycode 
        having sum(c.isOfficial)>1)
         ) as cisT 
 ON cisT.countrycode = c2.countrycode 
  where c2.isOfficial='F' 
  group by c2.countrycode 
  having sum(c2.isOfficial)>cisT.isOffTrue*2

Но я получаю ошибку псевдонима и могу 't определить причину проблемы, не могли бы вы мне помочь?

ПОЗЖЕ ....

RC: дополнительно) в соединении

NExt Ошибка: не распознаетпсевдоним внутренней суммы (), вы могли бы помочь?

  SELECT c2.countrycode , sum(c2.isOfficial) as isFalse
FROM countrylanguage as c2
 INNER JOIN (
        select c.countrycode , sum(c.isOfficial) isOffTrue 
        from countrylanguage as c 
        where c.isOfficial='T' 
        group by c.countrycode 
        having sum(c.isOfficial)>1
         ) as cisT 
 ON cisT.countrycode = c2.countrycode 
  where c2.isOfficial='F' 
  group by c2.countrycode 
  having sum(c2.isOfficial)>(cisT.isOffTrue*2);

ОШИБКА 1054 (42S22): неизвестный столбец «cisT.isOffTrue» в «имеющем предложение»

Добавление:

Таблица:

 +-------------+---------------+------+-----+--------+
| Field       | Type          | Null | Key | Default |
+-------------+---------------+------+-----+---------+
| CountryCode | char(3)       | NO   | PRI |         |
| Language    | char(30)      | NO   | PRI |         |
| IsOfficial  | enum('T','F') | NO   |     | F       |
+-------------+---------------+------+-----+---------+

Я изменил запрос, как следующий, и он работал, но я все еще не получаю RC предыдущего сбоя

SELECT c2.countrycode, sum(c2.isOfficial) as isOffFalse, c1.isOffTrue 
  FROM (
select c0.countrycode, sum(c0.isOfficial)as isOffTrue 
from countrylanguage c0 
where c0.isOfficial='T' 
group by c0.countrycode having sum(isOfficial)>1
) as c1, countrylanguage as c2
  where c1.countrycode = c2.countrycode 
and c2.isOfficial='F' 
group by c2.countrycode 
having sum(c2.isOfficial)>(c1.isOffTrue*2);

1 Ответ

0 голосов
/ 09 июня 2018

Вы присоединяетесь

ON cisT.countrycode = c2.countrycode

, но столбец кода страны не существует в таблице cisT.

...