1

我对JOIN表格的工作方式感到非常困惑。我试图阅读所有可能的文档,但没有得到任何好的结果。

我正在尝试SELECT在各种表上做很多事情以获取特定用户的所有数据。下面的查询似乎永远循环,没有任何好的结果。

谁能以最简单的方式以JOIN正确的方式进行解释?谢谢

SELECT user.id_user, name, surname, email, password, status, phone, address, city, zip_code, company_name, cf, piva, public, icon, description, note, web, facebook_id, facebook_token, twitter_id, twitter_token, linkedin_id, linkedin_token, ip, date, link, confirmed, newsletter, legal_validation FROM user,user_addfields_anagraphic,user_addfields_legal,user_addfields_public,user_addfields_social,user_registration WHERE user.id_user = '43534534534'
4

3 回答 3

2

您没有以任何有意义的方式将表连接在一起,因此您最终得到了笛卡尔积,这是每一行与其他行连接的地方。

您必须在每个表中找到允许相互关联的列(这是我们正在处理的关系数据库)。

因此,如果您想知道部门中有哪些员工,您可以执行类似的操作

select name, department 
from employee emp join Department d 
on emp.dept_no = d.dept_no
where dept.description = "SALES"

要识别的关键是连接条件——它指定了如何将一个表的内容与另一个表的内容相关联。

您的陈述非常复杂-我建议将其分解为小得多的块。让两个表连接工作,然后逐渐添加其他表。

于 2013-06-22T10:52:59.327 回答
1

试试喜欢

   SELECT table1.* , 
   table2.* , 
   table3.* 
   FROM table1 
   JOIN table2 ON .... 
   JOIN table3 ON....
于 2013-06-22T10:49:20.517 回答
0

您需要加入您的其他表。我在你的 where 子句中找不到这个

你可以这样做:

SELECT user.id_user, name, surname, email, password, status, phone, address, city, zip_code, company_name, cf, piva, public, icon, description, note, web, facebook_id, facebook_token, twitter_id, twitter_token, linkedin_id, linkedin_token, ip, date, link, confirmed, newsletter, legal_validation
FROM user
INNER JOIN user_addfields_anagraphic on user.user_id = user_addfields_anagraphic.user_id
...
WHERE user.id_user = '43534534534'

或者像这样(这是一样的)

SELECT user.id_user, name, surname, email, password, status, phone, address, city, zip_code, company_name, cf, piva, public, icon, description, note, web, facebook_id, facebook_token, twitter_id, twitter_token, linkedin_id, linkedin_token, ip, date, link, confirmed, newsletter, legal_validation
FROM user, user_addfields_anagraphic, ...
WHERE user.id_user = '43534534534' and
user.user_id = user_addfields_anagraphic.user_id and
...

在上面的这个例子中,我猜想,user_addfields_anagraphic.user_id 是你在名为“user_id”的表用户中的主键的外键。

您还需要使用此语法连接其他表,如上所示。但是尝试在没有 where 子句的情况下从多个表中选择连接其他表的位置是不可能的。

于 2014-03-25T13:37:55.390 回答