简体   繁体   English

错误代码:1052-字段列表中的列“ idk”不明确

[英]Error Code: 1052 - Column 'idk' in field list is ambiguous

Hi I trying to create query and add this, query error: 嗨,我尝试创建查询并将其添加,查询错误:

JOIN matakuliah ON nilai.idk = matakuliah.idk
WHERE matakuliah.semester = 1

full query: 完整查询:

SET @sql_dinamis = ( SELECT GROUP_CONCAT( DISTINCT CONCAT( 'max( IF(idk = ', idk, ',huruf,null) ) AS A', idk ) ) FROM nilai  );

SET @SQL = CONCAT( 'SELECT mahasiswa.nim, mahasiswa.nama, ', @sql_dinamis, ' 
FROM nilai
JOIN mahasiswa ON nilai.idm = mahasiswa.idm
JOIN matakuliah ON nilai.idk = matakuliah.idk
WHERE matakuliah.semester = 1
GROUP BY nilai.idm' );
PREPARE stmt 
FROM
@SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

error message: 错误信息:

FROM nilai
JOIN mahasiswa ON nilai.idm = mahasiswa.idm
JOIN matakuliah ON nilai.idk = matakuliah.idk
WHERE matakuliah.semester = 1
GROUP BY nilai.idm' )
> OK
> Time: 0s


PREPARE stmt 
FROM
@SQL
> 1052 - Column 'idk' in field list is ambiguous
> Time: 0s

help me to solve this. 帮我解决这个问题。

this my database https://irhas.online/test/test2.txt please help me. 这是我的数据库https://irhas.online/test/test2.txt,请帮助我。

Your query has a reference to idk (from the @sql_dinamis part) however both your nilai and matakuliah have idk fields in them, so SQL doesn't know which one you want. 您的查询具有对idk的引用(来自@sql_dinamis部分),但是您的nilaimatakuliah都具有idk字段,因此SQL不知道您要哪个。 You need to change the idk in 您需要在其中更改idk

SET @sql_dinamis = ( SELECT GROUP_CONCAT( DISTINCT CONCAT( 'max( IF(idk = ', idk, ',huruf,null) ) AS A', idk ) ) FROM nilai  );

to be either nilai.idk or matakuliah.idk eg 例如为nilai.idkmatakuliah.idk

SET @sql_dinamis = ( SELECT GROUP_CONCAT( DISTINCT CONCAT( 'max( IF(nilai.idk = ', idk, ',huruf,null) ) AS A', idk ) ) FROM nilai  );

This works for me (see DBFiddle ) 这对我有用 (请参阅DBFiddle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM