当我尝试进行内部联接时,我遇到了错误:#1066 - 不是唯一的表/别名:' afspraken'
以下是我的尝试:
SELECT accounts.werknemer_id, accounts.voornaam, accounts.achternaam, klanten.klant_id, klanten.voornaam, klanten.achternaam
FROM accounts, klanten
JOIN afspraken ON afspraken.werknemer_id = afspraken.werknemer_id JOIN afspraken ON afspraken.klant_id = afspraken.klant_id
我想知道出了什么问题,我一直在谷歌,但他们都找不到解决方案。
感谢正手
答案 0 :(得分:1)
当您使用两个表的内连接时,内连接的条件必须是两个中都存在的相同字段。此外,所选字段必须位于一个表或另一个表中,您不能只根据同一个表的同一字段将条件放入内连接。等于afspraken.werknemer_id = afspraken.werknemer_id
和等于afspraken.klant_id = afspraken.klant_id
导致错误。
我认为您希望加入表格accounts
和klanten
,而afspraken
和werknemer_id
字段中的klant_id
表没有共同字段,所以它会是这样的:
SELECT accounts.werknemer_id,
accounts.voornaam,
accounts.achternaam,
klanten.klant_id,
klanten.voornaam,
klanten.achternaam
FROM accounts
INNER JOIN afspraken ON accounts.werknemer_id = afspraken.werknemer_id
INNER JOIN klanten ON afspraken.klant_id = klanten.klant_id
答案 1 :(得分:0)
此查询的几个部分令人担忧:
SELECT accounts.werknemer_id, accounts.voornaam, accounts.achternaam, klanten.klant_id, klanten.voornaam, klanten.achternaam
FROM accounts, klanten <-- This line is the problem
JOIN afspraken ON afspraken.werknemer_id = afspraken.werknemer_id <--or these two are (1)
JOIN afspraken ON afspraken.klant_id = afspraken.klant_id <--(2)
要解决我们需要知道帐户与klanten的关系 当你可以在连接语法上使用一个和子句时,为什么你需要两个连接才能使用...
INNER JOIN afspraken
ON afspraken.werknemer_id = afspraken.werknemer_id <--or these two are (1)
AND afspraken.klant_id = afspraken.klant_id <--(2)
此外,你不是别名的别名。这也会导致问题,因为系统不知道要链接到哪个连接。
所以要么......
SELECT A.werknemer_id, A.voornaam, A.achternaam, K.klant_id, K.voornaam, K.achternaam
FROM accounts A, klanten K, afspraken AF, afspraken AF2
WHERE AF.werknemer_id = AF2.werknemer_id
AND AF.klant_id = AF2.klant_id
虽然帐户如何与klaten OR相关
SELECT A.werknemer_id, A.voornaam, A.achternaam, K.klant_id, K.voornaam, K.achternaam
FROM accounts A
CROSS JOIN klanten K
CROSS JOIN afspraken AF,
INNER JOIN afspraken AF2
ON AF.werknemer_id = AF2.werknemer_id
AND AF.klant_id = AF2.klant_id
但是我可能会把关系搞砸了,因为我不明白每个表在你的例子中如何与彼此的表相关。