Q1.find out manager of each employee.
empid empname managerid
1 mukesh 3
2 rakesh
0
3 yogi 2
4 sanjeev 1
5 hari 1
Ans.
select e.empid ,e.empname,M.empname as
manager from
empM e left outer join empM M on
m.empid=e.managerid
empid empname manager
1 mukesh yogi
2 rakesh
NULL
3 yogi rakesh
4 sanjeev mukesh
5 hari mukesh
Q2. Find out output of this query
select e.empid ,e.empname,M.empname as
manager from
empM e left outer join empM M on
e.empid=m.managerid
ans.
empid empname manager
1 mukesh sanjeev
1 mukesh hari
2 rakesh yogi
3 yogi mukesh
4 sanjeev NULL
5 hari NULL
Q3.find out that manager
who has more than 1 employee under him.
empid empname managerid
1 mukesh 3
2 rakesh
0
3 yogi 2
4 sanjeev 1
5 hari 1
Ans.
declare
@manager as varchar(23),@count as int
declare @name table(empid int ,empname varchar(23),managerid varchar(34))
insert into @name(empid,empname,managerid) select e.empid ,e.empname,M.empname as
manager from
empM e left outer join empM M on
m.empid=e.managerid
select
@manager=managerid,@count=COUNT(managerid)from @name group by managerid having COUNT(managerid)>1
select @manager as
manager
Q4. HOW TO USE OUPUT PARAMETER IN PROCEDURE
ANS.
create proc sp_out
(
@a int,
@b int,
@c int output
)
as
begin
set @c=@a+@b
end
declare @p as int
exec sp_out 1,2,@p output
select @p
3
Q5 WHAT WOULD BE OUTPUT OF LEFT OUTER JOIN IF
WE HAVE TWO TABLE LIKE THIS
1.TABLE PK
ID NAME
1 MUKESH
2 YOGI
NULL YOGI
2. TABLE JK
REFID ADDRESS
NULL NULL
1 KANPUR
NULL JHANSI
ANS.
SELECT PK.ID,PK.NAME,JK.[ADDRESS] FROM PK LEFT OUTER JOIN JK ON
PK.ID=JK.REFID
ID NAME ADDRESS
1 MUKESH KANPUR
2 YOGI
NULL
NULL YOGI
NULL
NULL YOGI JHANSI
Q6. GIVE YOUR VIEW WHETHER SP_TB PROCEDURE
1 WILL RUN OR NOT BCZ
TEMP TABLE IS NOT CREATED IN
PROCEDURE SP_PO
CREATE PROC
SP_TB
AS
BEGIN
CREATE
TABLE #TEMP(NAME
VARCHAR(23))
EXEC
SP_PO
END
CREATE
PROC SP_PO
AS
BEGIN
INSERT
INTO #TEMP VALUES('MUKESH')
END
ANS THIS WILL RUN SMOOTHLY
Q7. JOINS
TABLE 1. EMPM
empid empname managerid
1 mukesh 3
2 rakesh
0
3 yogi 2
4 sanjeev 1
5 hari 1
TABLE 2. EMPM2
REFID ADDRESS
1 KANPUR
TABLE 3 . EMPM3
FID SEX
2 MALE
NOW SEE THE RESULT OF QUERY
LEFT OUTER JOIN
SELECT PM.empid,PM.empname,PM2.[ADDRESS] FROM EMPM PM LEFT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID
WILL PRODUCE THE RESULT
empid empname ADDRESS
1 mukesh KANPUR
2 rakesh NULL
3 yogi NULL
4 sanjeev NULL
5 hari NULL
NOW APPLY AGAIN INNER JOIN THEN RESULT
SELECT
PM.empid,PM.empname,PM2.[ADDRESS] FROM EMPM
PM LEFT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID INNER JOIN
EMPM3 PM3 ON PM.empid=PM3.FID
empid empname ADDRESS
2 rakesh
NULL
IF APPLY AGAIN LEFT OUTER THEN RESULT
SELECT
PM.empid,PM.empname,PM2.[ADDRESS],PM3.SEX FROM EMPM PM LEFT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID LEFT OUTER JOIN
EMPM3 PM3 ON PM.empid=PM3.FID
empid empname ADDRESS SEX
1 mukesh KANPUR NULL
2 rakesh NULL MALE
3 yogi NULL NULL
4 sanjeev NULL NULL
5 hari NULL NULL
NOW WHEN WE APPLY RIGHT JOIN IN PREVIOUS TWO
TABLE THEN RESULT
SELECT PM.empid,PM.empname,PM2.[ADDRESS] FROM EMPM
PM RIGHT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID
empid empname ADDRESS
1 mukesh KANPUR
NOW WHEN WE APPLY LEFT JOIN IN PREVIOUS QUERY
THEN RESULT
SELECT PM.empid,PM.empname,PM2.[ADDRESS],PM3.SEX FROM EMPM PM RIGHT OUTER JOIN EMPM2 PM2 ON PM.empid=PM2.REFID LEFT OUTER JOIN
EMPM3 PM3 ON PM.empid=PM3.FID
empid empname ADDRESS SEX
1 mukesh KANPUR NULL
Q8. USING JOIN IN UPDATE
UPDATE PM1 SET PM1.EMPNAME='yogi' FROM EMPM PM1
INNER
JOIN EMPM2 PM2 ON
PM1.empid=PM2.REFID
sql query Copying table
data to another table that should not be repeating terms using Cursor
sql query Copying table data to another table
that should not be repeating terms using Cursor
DECLARE @ACCOUNTID BIGINT
DECLARE @NAME VARCHAR(30)
DECLARE @TEB TABLE(NAME VARCHAR(34),NUM BIGINT)
DECLARE @GETACCOUNTID CURSOR
SET @GETACCOUNTID = CURSOR FOR
SELECT NAME, MBNO
FROM EMP1
OPEN @GETACCOUNTID
FETCH NEXT
FROM @GETACCOUNTID INTO @NAME,@ACCOUNTID
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS(SELECT 1 FROM @TEB WHERE NAME=@NAME AND NUM=@ACCOUNTID)
zzBEGIN
DECLARE @P AS BIGINT
INSERT INTO @TEB VALUES(@NAME,@ACCOUNTID)
END
FETCH NEXT
FROM @GETACCOUNTID INTO @NAME,@ACCOUNTID
END
CLOSE @GETACCOUNTID
DEALLOCATE @GETACCOUNTID
SELECT* FROM @TEB
DECLARE @ACCOUNTID BIGINT
DECLARE @NAME VARCHAR(30)
DECLARE @TEB TABLE(NAME VARCHAR(34),NUM BIGINT)
DECLARE @GETACCOUNTID CURSOR
SET @GETACCOUNTID = CURSOR FOR
SELECT NAME, MBNO
FROM EMP1
OPEN @GETACCOUNTID
FETCH NEXT
FROM @GETACCOUNTID INTO @NAME,@ACCOUNTID
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS(SELECT 1 FROM @TEB WHERE NAME=@NAME AND NUM=@ACCOUNTID)
zzBEGIN
DECLARE @P AS BIGINT
INSERT INTO @TEB VALUES(@NAME,@ACCOUNTID)
END
FETCH NEXT
FROM @GETACCOUNTID INTO @NAME,@ACCOUNTID
END
CLOSE @GETACCOUNTID
DEALLOCATE @GETACCOUNTID
SELECT* FROM @TEB
Q10. how to use case statement in sql
ans.
select name,case(age) when '23' then '101'
when '27'then '102'
else
'mukesh'
end
from emp
ans.
select name,case(age) when '23' then '101'
when '27'then '102'
else
'mukesh'
end
from emp
Q11.HERE WE HAVE A TABLE LIKE THIS
TABLE EMP12
mukesh m
yogi f
rakesh m
UPDATE THE TABLE OF COLUMN GENDER WHERE M THEN
F AND WHERE F THERE M
ANS
UPDATE emp12
SET
gender = CASE
WHEN gender = 'm'
THEN 'f'
ELSE 'm'
END
UPDATE emp12
SET
gender = CASE
WHEN gender = 'm'
THEN 'f'
ELSE 'm'
END
No comments:
Post a Comment