我有一个存储过程,必须从多个表中检索数据
就像是
SELECT [AppointmentId]
,[ContactId]
,[Date]
,[BookedBy]
,[Details]
,[Status]
,[Time]
,[Type]
,[JobId]
,[AppointmentFor]
,(Select PersonFirstName from Person where Person_Id = [AppointmentFor]) As UserFirstName
,(Select PersonLastName from Person where Person_Id = [AppointmentFor]) As UserLastName
,(Select PersonFirstName from Person where Person_Id = [ContactId]) As ContactFirstName
,(Select PersonLastName from Person where Person_Id = [ContactId]) As ContactLastName
FROM [dbo].[Appointments]
Run Code Online (Sandbox Code Playgroud)
我的问题是还有其他更有效的方法吗?或者这是正确的方法吗?
我正在使用Sql server 2008谢谢
我有一个表跟踪链接结构如下:
id
domain_name
traffic_count
enabled
created_at
Run Code Online (Sandbox Code Playgroud)
假设我有一个domain_name为"some-domain.com"的记录,然后让我说我想找到具有该域的记录,除了我必须经历的是该域的子域.
我基本上想要这样做:
SELECT * FROM links 'subdomain.some-domain.com' LIKE %domain_name%"
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
这是给出重复结果的查询:
SELECT a.applicant_particular_id, a.name, a.father_name, a.quota_id,
c.hafiz_quran_marks, b.form_status
FROM applicant_particular a,admission_choices b, academic_background c
WHERE b.applicant_particular_id=a.applicant_particular_id
AND c.applicant_particular_id=a.applicant_particular_id
AND a.quota_id='18'
AND b.form_status='RECEIVED'
Run Code Online (Sandbox Code Playgroud)
这是第一个表"applicant_particular"
这是第一个表"applicant_particular"
applicant_particular_id | name | father_name | quota_id
1 John Micheal 18
2 khan ali 19
Run Code Online (Sandbox Code Playgroud)
这是第二个表"admission_choices"
choice_id | form_status | applicant_particular_id | program_id
1 PENDING 2 19
2 RECEIVED 1 18
Run Code Online (Sandbox Code Playgroud)
这是第三个表"academic_background"
background_id | hafiz_marks | applicant_particular_id
1 20 2
2 30 1
Run Code Online (Sandbox Code Playgroud) 我有这样的商店程序:
ALTER PROCEDURE [dbo].[CheckUser&Pass]
(
@Username nchar(15),
@Password nchar(15)
)
AS
SET NOCOUNT ON;
SELECT Username, Pass, Code_Person
FROM Login
WHERE (Username = @Username) AND (Pass = @Password)
Run Code Online (Sandbox Code Playgroud)
并执行:
DECLARE @return_value int
EXEC @return_value = [dbo].[CheckUser&Pass]
@Username = N'admin',
@Password = N'1234'
SELECT 'Return Value' = @return_value
GO
Run Code Online (Sandbox Code Playgroud)
我想知道如果用户名是admin并且密码是1234,我可以将@return_Value设置为1.
但它不能正常工作,这可能吗?
我有一个SQL Server 2008数据库,表中包含以下信息:
ID Name
-- ----
1 John
2 Jill
3 John
4 Phil
5 Matt
6 Jill
Run Code Online (Sandbox Code Playgroud)
我想在下拉列表中显示唯一的名称.因此,我只需要一个与唯一名称相关联的ID.我知道它很脏.我没有制造这个烂摊子.我只需要使用其中一个ID的唯一名称.如何编写将执行此操作的查询?我知道由于ID字段,以下内容不起作用.
SELECT DISTINCT
[ID], [Name]
FROM
MyTable
Run Code Online (Sandbox Code Playgroud) 如果存储过程允许处理复合条件,请告诉我:
if(
( (select Count(*) from dbo.Membership where EmailID=@emailID) >0)
||
((select Count(*) from dbo.Allocation where ResourceEmail=@emailID)>0))
)
Run Code Online (Sandbox Code Playgroud)