2013-07-17 32 views
-1

任何人都可以帮我一下。如何使用主 - 外键概念来检查多个表格

我用这个基本的脚本我的目标:

http://www.aspsnippets.com/Articles/Check-UserName-Availability-in-ASP.Net-using-JQuery.aspx

现在我想达到什么是

,它应该检查在相同的用户名3个表,并确认显示:

在哪它存在并且它不存在。

那么如何来实现这一目标,谁能告诉我我想到到:

做一个表(4日)与主键的用户名和它将包含用户名。

现在在其他3个表中,我将这些表用户名作为外键并将第4个表用户名与它连接起来。

现在我的问题是:什么存储过程函数来调用来实现该目标?

+0

你可以发布你已经尝试了什么? –

+2

外键概念不适用于检查存在的行 - 这是为表的ENFORCING规则。在你的情况下,为什么不使用简单的查询? – VikciaR

回答

2
select t1.Name as name1, t2.Name as name2, t3.Name as name3 from Table1 t1 
full outer join Table2 t2 on t1.Name = t2.Name 
full outer join Table3 t3 on t1.Name = t3.Name OR t3.Name = t2.Name 
+0

哇这就是我正在寻找..但一个简单的最后一个问题..如何显示基于该查询结果.. –

+0

其中一种可能性:http://asp-net-example.blogspot.com/2008/11 /aspnet-sqlcommand-example-how-to-use.html – VikciaR

0

你可以用下面的查询尝试。

如果希望每个表的行:

SELECT 'Table1' AS Tbl, COALESCE((SELECT 'Yes' FROM Table1 WHERE Name = 'Joe'),'No') AS Exist 
UNION ALL 
SELECT 'Table2', COALESCE((SELECT 'Yes' FROM Table2 WHERE Name = 'Joe'),'No') AS Exist 
UNION ALL 
SELECT 'Table3', COALESCE((SELECT 'Yes' FROM Table3 WHERE Name = 'Joe'),'No') AS Exist 

或者,如果你想单排和各表的列

SELECT 
    CASE WHEN t1.Name IS NULL THEN 'No' ELSE 'Yes' END as Table1 
    ,CASE WHEN t2.Name IS NULL THEN 'No' ELSE 'Yes' END as Table2 
    ,CASE WHEN t3.Name IS NULL THEN 'No' ELSE 'Yes' END as Table3 
FROM Table1 t1 
FULL JOIN Table2 t2 ON t1.Name = t2.Name 
FULL JOIN Table3 t3 ON t1.Name = t3.Name OR t3.Name = t2.Name 
AND t1.Name = 'Joe' AND t2.Name = 'Joe' AND t3.Name = 'Joe' 

SQLFiddle DEMO

+0

非常感谢好友,我需要什么.. :)但使用asp如何查看网格或东西? –

+0

任何人都可以告诉我如何检查用户填写文本框后按钮单击此代码? –

+0

@JohnKim使用您发布的链接中的示例。只需将此代码存储在存储过程('spx_CheckUserAvailability')中,而不是在那里提供的代码。 –