好的,好吧。 。 。我有一个Web应用程序,我正在使用ASP,VB.net等在Microsoft Visual Web Developer中开发,这将允许“卖家”发布“买家”的广告来查看。当买方搜索产品时,每个结果都需要显示卖方的名称和产品的信息。问题是保存各种产品信息的表位于一个数据库中,用户/成员信息存储在另一个数据库中。
我将提供一个例子。在这种情况下,买方正在搜索特定图书的所有广告。
鉴于此,我将如何做以下事情:
SELECT u.Name [Seller]
, b.Title [Title]
, b.Author [Author]
FROM db_1.Results r
INNER JOIN db_1.Books b
ON b.id = r.id_book
INNER JOIN db_2.Users u
ON u.id = r.id_user
WHERE b.Title like 'Some Book Title'
如果这些表位于同一个数据库中(我现在希望我已经完成),那么我可以轻松运行内连接或其他一些select语句来仅提取相关数据。我还考虑过创建数据集并加入它们(例如http://www.vb-helper.com/howto_net_dataset_foreign_key.html),但这不会太过庞大吗?
我对SQL语句的态度不错,但我所有的知识都来自谷歌和实践,所以如果我忽略了每个经过专业训练的程序员都知道的一些重要警告,我道歉。提前感谢您的帮助。
更新:我想我会更新情况。问题实际上与权限没有任何关系。问题是VWD找不到对象。我通过使用CROSS JOIN并在select语句中明确声明.mdf文件的目录路径来解决了这个问题。再次感谢您的帮助。
答案 0 :(得分:1)
如上面的@rs所示,您的查询将进行微小的更改。数据库名称和表名称之间的中间部分dbo
是对象的所有者名称。如果所有者拥有两个模式的权限,并且您的用户ID有权从两个数据库中进行选择,则查询将起作用。
SELECT u.Name [Seller]
, b.Title [Title]
, b.Author [Author]
FROM db_1.dbo.Results r
INNER JOIN db_1.dbo.Books b
ON b.id = r.id_book
INNER JOIN db_2.dbo.Users u
ON u.id = r.id_user
WHERE b.Title like 'Some Book Title'
答案 1 :(得分:1)
以下是使用sql server管理工具
在数据库和grant select权限中使用相同用户的简单步骤user table
,右键单击并转到属性单击
权限和单击搜索按钮从上面找到相同的用户和
选择该用户对希望数据库用户从数据库2访问的所有表重复上一步