Как решить -Error- Колонка 'RefName' в списке полей неоднозначна? - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу создать таблицу на основе RefName с символом e05c%.Но почему сообщение показывает RefName в списке полей неоднозначно?

Ниже мой код:

 DROP TABLE  IF EXISTS TotalZSummary;
 CREATE TABLE TotalZSummary

 SELECT RefName,
        COUNT(CellName) AS CellCount,
        SUM(CellCount*Z_perInst) AS SumZ,
 FROM find_interface c LEFT JOIN
      stdCellVariant v 
     ON c.RefName = v.RefName
 WHERE RefName LIKE 'e05c%'
 GROUP BY RefName;

это мой новый код:

DROP TABLE  IF EXISTS TotalZSummary;
CREATE TABLE TotalZSummary

SELECT
c.RefName,
COUNT(c.CellName) AS CellCount,
SUM(c.CellCount*v.Z_perInst) AS SumZ,
FROM `find_interface` c
LEFT JOIN `stdCellVariant` v ON c.RefName=v.RefName
WHERE c.RefName LIKE 'e05c%'
GROUP BY c.RefName
;

показанная ошибка: ошибка - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом со значением 'FROM find_interface c LEFT JOIN stdCellVariant v ON c.RefName = v.RefName WHER' в строке 1.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Эта часть:

WHERE RefName LIKE 'e05c%'
GROUP BY RefName

Вы ссылаетесь на RefName столбец, но RefName - это столбец в таблице find_interface И в таблице stdCellVariant.Даже если вы уже говорите, что они должны совпадать, все ссылки на столбцы, которые могут повторяться, должны иметь префикс с именем таблицы или псевдонимом:

WHERE C.RefName LIKE 'e05c%'
GROUP BY C.RefName

Также в этом примере, поскольку вы используете LEFT JOINиспользование C или V в качестве псевдонима будет иметь совершенно другой эффект.Попробуйте!


Из вашего издания:

SUM(c.CellCount*v.Z_perInst) AS SumZ, -- here!
FROM `find_interface` c

Удалите запятую непосредственно перед FROM, так как вы не указываете другой столбец для выбора.

0 голосов
/ 18 декабря 2018

Если в запросе содержится более одной таблицы, уточняйте ссылки на столбцы!

SELECT c.RefName, COUNT(c.CellName) AS CellCount, 
       SUM(v.CellCountZ_perInst) AS SumZ, 
       SUM(v.CellCountUV1_TxTotZ) AS SvtZ, 
       SUM(v.CellCountNOM_TxTotZ) AS NomZ,
       SUM(v.CellCountUV2_TxTotZ) AS HvtZ
FROM find_interface c LEFT JOIN
     stdCellVariant v
     ON c.RefName = v.RefName
WHERE c.RefName LIKE 'e05c%'
GROUP BY c.RefName ;

Я предполагаю, что все остальные столбцы взяты из stdCellVariant.

...