Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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
使用基本关系代数在SQL/DBMS中查询两个不同的表_Sql_Database_Relational Database_Relational Algebra - Fatal编程技术网

使用基本关系代数在SQL/DBMS中查询两个不同的表

使用基本关系代数在SQL/DBMS中查询两个不同的表,sql,database,relational-database,relational-algebra,Sql,Database,Relational Database,Relational Algebra,我是DBMS和SQL的新手。我需要运行一个使用两个表的查询。例如,我有一个用户[姓名、密码、id、公司id]表和另一个公司[公司名称、公司id、netWorth]。companyId链接两个表。对于每个用户,我需要使用基本的rel-alg操作进行查询,返回他们的姓名、公司名称和网络价值。一个简单的连接应该可以做到: SELECT u.name, c.comp_name, c.net_worth FROM users u JOIN companies c ON u.company_id =

我是DBMS和SQL的新手。我需要运行一个使用两个表的查询。例如,我有一个用户[姓名、密码、id、公司id]表和另一个公司[公司名称、公司id、netWorth]。companyId链接两个表。对于每个用户,我需要使用基本的rel-alg操作进行查询,返回他们的姓名、公司名称和网络价值。

一个简单的
连接应该可以做到:

SELECT u.name, c.comp_name, c.net_worth
FROM   users u
JOIN   companies c ON u.company_id = c.company_id

这是您要查找的查询

(只使用了
=
,没有
内部连接
);)

SELECT users.name, companies.comp_name, companies.netWorth
FROM companies, users
WHERE companies.companyID = users.companyId

虽然这会起作用,但最好使用ANSI join语法(例如,使用内部join关键字)而不是=符号来连接表,因为这样更清楚地表明执行的是连接而不是筛选器,而且如果以这种方式编写查询,很容易错过连接。@bbrumm
之间没有区别,
交叉连接
,并且
上的
中的
之间除了优先级之外没有区别,因此您的调整是不合理的。唯一需要
on
的原因是外部联接。
交叉联接
,这是
内部联接
on
正确。你想说什么?你不清楚。表情符号不能使它更清晰。@philipxy-是的,在功能上没有区别。然而,ANSI标准(JOIN关键字和ON)已经存在很长时间了,它比旧样式(使用=符号)更可取,原因有几个:使用“a=b上的内部JOIN t”显然是一个连接,而不是像“WHERE a=b”这样的行过滤器。此外,对于较大的查询,如果使用“WHERE a=b”并得到错误的结果,则很容易忘记添加联接。如果您使用ANSI语法,那么如果您错过一个连接,您的查询将不会运行。@bbrumm我将让我以前对您的评论作为对此的答复。然而,我建议你仔细考虑一下关于“使用=符号”你想说什么,但没有说什么。另外,您的概念是,“它是一个连接[plus
on
]”与“它是一个连接加上一个过滤器”在某种程度上是不同的。在
s&
上的
,其中
s具有完全相同的表达式和含义;它们是不同绑定的同义词,所以无论(ANSII/ISO)
怎么说,它都是按照
连接的方式说的。我同意
on
有助于将联接条件本地化为特定联接,而无需嵌套选择。您使用的是什么版本的关系代数?你能做这件事的哪些部分?你看到过这样的例子吗?既然这是一个绝对基本的问题,阅读你的文章和谷歌搜索有什么建议?什么意思,DBMS中的表还通过代数对其进行操作??要么是SQL要么是代数。你的作业到底说了什么?