简体   繁体   English

两个表的内部连接

[英]Inner join on two tables

As im trying to do an inner join, im getting stuck by an error : #1066 - Not unique table/alias: 'afspraken' 当我尝试进行内部联接时,我被错误卡住了:#1066-不是唯一的表/别名:'afspraken'

Here is what i am trying: 这是我正在尝试的:

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

i am wondering what is going wrong, i have been on google, but neither their i could find a solution. 我想知道怎么回事,我一直在谷歌上,但他们都找不到解决方案。

Thanks in forehand 正手感谢

When you use an inner join of two tables, the condition of inner join must be an identical field existing in both. 当您使用两个表的内部联接时,内部联接的条件必须是两个表中都存在的相同字段。 Also, the fields selected must be in one table or another, you cannot just place a condition to inner join based on the same field of the same table. 另外,选定的字段必须在一个或另一个表中,您不能仅基于同一表的同一字段为内部联接放置条件。 the equal afspraken.werknemer_id = afspraken.werknemer_id and the equal afspraken.klant_id = afspraken.klant_id are causing the error. 相等的afspraken.werknemer_id = afspraken.werknemer_id和相等的afspraken.klant_id = afspraken.klant_id引起了错误。

I believe you want to join both tables accounts and klanten with no common field through the table afspraken with werknemer_id and klant_id fields, so it would be like this: 我相信您想通过带有werknemer_idklant_id字段的表afspraken将两个表accountsklanten合并为一个没有公共字段的字段,因此将如下所示:

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

There are several parts of this query that are worrysome: 此查询有几个令人担忧的部分:

  1. Comma join syntax vs inner join syntax (pick 1, you can't do both) 逗号联接语法与内部联接语法(选择1,您不能两者都做)
  2. No table alias when joining two tables with the same name. 连接两个具有相同名称的表时,没有表别名。 Compiler can't figure out what to do. 编译器不知道该怎么办。
  3. Relationships between tables are not identifiable, thus the data returned will not likely produce what you're trying to do 表之间的关系无法识别,因此返回的数据不太可能产生您要执行的操作
  4. afspraken is added to the query, but not in the select what purpose does this serve? 将afspraken添加到查询中,但未在选择中将其用于什么目的?
  5. In plain English, describe what it is you need. 用简单的英语描述您的需求。 (show sample data and desired results) (显示样本数据和所需结果)

.

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)

to solve we would need to know how accounts relate to klanten and why you need two joins to afspraken when you could use an and clause on the join syntax such as... 为了解决这个问题,我们需要知道科目与klanten的关系,以及为什么可以在联接语法上使用and子句时需要两次联接到afspraken,例如...

INNER JOIN afspraken 
  ON afspraken.werknemer_id = afspraken.werknemer_id <--or these two are (1)
 AND afspraken.klant_id = afspraken.klant_id <--(2)

Furthermore, you don't alias afspraken. 此外,您无需别名afspraken。 which also would cause problems as the system wouldn't know what join to link to. 这也会引起问题,因为系统不知道要链接到的联接。

So either... 所以...

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 

Though again how do accounts relate to klaten OR 尽管帐户又如何与klaten或相关

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 

but I likely have the relationships messed up as I don't understand how each table relates to each other table in your example. 但由于我不了解您的示例中每个表之间的关系,因此我可能弄错了这些关系。

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

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