Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我对联接表的查询是否有错误代码?_Mysql_Sql - Fatal编程技术网

Mysql 我对联接表的查询是否有错误代码?

Mysql 我对联接表的查询是否有错误代码?,mysql,sql,Mysql,Sql,我真的对这些代码感到困惑。我有这样的疑问 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `aIPK` AS select `ipbmst_fakultas`.`Kode` AS `Fakultas`, `ipbmst_departemen`.`Kode` AS `Departemen`, `akdmst_mahasiswamagister`.`NIM` AS `NIM`, `akd

我真的对这些代码感到困惑。我有这样的疑问

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `aIPK` AS select 
`ipbmst_fakultas`.`Kode` AS `Fakultas`,
`ipbmst_departemen`.`Kode` AS `Departemen`,
`akdmst_mahasiswamagister`.`NIM` AS `NIM`,
`akdmst_mahasiswamagister`.`TahunMasuk` AS `TahunMasuk`,
 `akdhis_kelanjutanstudi`.`IPK` AS `IPK`
from (((((`akdmst_mahasiswamagister` left join `akdmst_mayor` on((`akdmst_mahasiswamagister`.`MayorID` = `akdmst_mayor`.`ID`))) 
left join `ipbmst_departemen` on((`akdmst_mayor`.`DepartemenID` = `ipbmst_departemen`.`ID`))) 
left join `ipbmst_fakultas` on((`ipbmst_departemen`.`FakultasID` = `ipbmst_fakultas`.`ID`))) 
left join `ipbmst_orang` on((`akdmst_mahasiswamagister`.`NIM` = `ipbmst_orang`.`NIMS2Key`))) 
left join `akdhis_kelanjutanstudi` on((`akdhis_kelanjutanstudi`.`NIM` = `ipbmst_orang`.`NIMS2Key`)))
WHERE `akdhis_kelanjutanstudi`.`IPK` IS NOT NULL

order by NIM
LIMIT 100;
但“IPK”结果为空,实际上IPK有它的值。那些代码怎么了

以下是我的表格结构:

table 1: akdmst_mahasiswamagister (ID, MahasiswaID, NIM, MayorID, TahunMasuk)
table 2: akdmst_mayor(ID, DepartemenID)
table 3: ipbmst_departemen(ID, FakultasID, DepartmenName)
table 4: ipbmst_fakultas(ID, FacultyName)
table 5: ipbmst_orang(ID, Name, NIMS2Key)
table 6: akdhis_kelanjutanstudi(ID, NIM, IPK)

关于这个查询,我还有另一个问题。查询视图花费了太多时间。我想可能是因为表akdhis_Kelanjutani包含了超过300K的数据记录。我用过“限制100”,但还是一样。您能帮我解决这个问题吗?

我不知道确切的问题是什么,但是您的
WHERE
子句有一个问题:

WHERE IPK IS NOT NULL
不允许在
WHERE
子句中引用列别名,因为其值可能尚未确定。相反,您应该使用以下选项:

WHERE akdhis_kelanjutanstudi.IPK IS NOT NULL
更新:

在原始视图中使用的括号看起来很奇怪、不必要,而且可能是错误的。尝试使用以下方法:

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`
    SQL SECURITY DEFINER VIEW aIPK AS
SELECT t4.Kode AS Fakultas,
       t3.Kode AS Departemen,
       t1.NIM AS NIM,
       t1.TahunMasuk AS TahunMasuk,
       t6.IPK AS IPK
FROM akdmst_mahasiswamagister t1
LEFT JOIN akdmst_mayor t2
    ON t1.MayorID = t2.ID
LEFT JOIN ipbmst_departemen t3
    ON t2.DepartemenID = t3.ID
LEFT JOIN ipbmst_fakultason t4
    ON t3.FakultasID = t4.ID
LEFT JOIN ipbmst_orang t5
    ON t1.NIM = t5.NIMS2Key
LEFT JOIN akdhis_kelanjutanstudi t6
    ON t6.NIM = t5.NIMS2Key
WHERE t6.IPK IS NOT NULL
ORDER BY NIM
LIMIT 100;

运行sql而不是创建算法更易于测试

在您的情况下,请检查join中的条件


在(`akdhis_kelanjutanstudi`.`NIM`=`ipbmst_orang`.`NIMS2Key`)上)

你也需要改变


其中,`akdhis_kelanjutanstudi`.`IPK`不为空


其中'IPK'不为空

您的描述有误

你的桌子是空的

表1:akdhis_mahasiswamagister(ID、MahasiswaID、NIM、MayorID、Tahumanasuk) 表2:akdmst_市长(ID,部门ID) 表3:ipbmst_部门(ID、FakultasID、部门名称) 表4:ipbmst_fakultas(ID,学院名称) 表5:ipbmst_orang(ID、名称、NIMS2键) 表6:akdhis_Kelanjutani研究(ID、NIM、IPK)

但我在你的选择中没有看到“akdhis_mahasiswamagister”表

创建算法=未定义的定义器=
@
localhost
SQL安全定义器视图
aIPK
AS select
ipbmst\u fakultas
Kode
AS
fakultas
ipbmst\U部门
Kode
作为
部门
akdmst\u mahasiswamagister
NIM
AS
NIM
akdmst_mahasiswamagister
tahumansuk
AS
tahumansuk
akdhis_kelanjutani研究
IPK
AS
IPK
从((
akdmst\u mahasiswamagister
内部连接
akdmst\u mayor
on(
akdmst\u mahasiswamagister
MayorID=
akdmst\u mayor
ID
)开始) 内部联接
ipbmst\u部门
on(
akdmst\u市长
departmentId
=
ipbmst\u部门
ID
)) 内部连接(
ipbmst\u fakultas
on(
ipbmst\u部门
FakultasID
=
ipbmst\u fakultas
)) 内部连接(
akdmst\u mahasiswamagister
NIM
=
ipbmst\u orang
NIMS2Key
)) 内部联接
akdhis_kelanjutanstudi
on(
akdhis_kelanjutanstudi
NIM
=
ipbmst\u orang
NIMS2Key
)) 其中IPK不为NULL

尼姆的命令 上限为100


akdhis_mahasiswamagister和akdmst_mahasiswamagister是不同的?可能您使用了错误的表格,因此您的信息不正确

是的,我输入了这样的代码,但仍然不工作
仍然不工作
是什么意思?你能说得更具体些吗?我的意思是数据获取花费了这么多时间。可能是因为表akdhis_kelanjutanstudi包含了超过300K的数据。你能帮我解决那个问题吗?是的。我刚才的描述有误。我已经编辑了我的问题。表1为akdmst_mahasiswamagister。没有akdhis_mahasiswamagister表。所以我不会用错桌子。我只是打错了描述