1. Trang chủ
  2. » Công Nghệ Thông Tin

Instructor Inputs - Session 12 pptx

10 149 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 369,83 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

To solve the problem, you need to execute two Update statements as follows: UPDATE vwSalesOrderDetail SET OrderQty = 2 FROM vwSalesOrderDetail WHERE SalesOrderID = 43659 UPDATE vwSal

Trang 1

Instructor Inputs S e

Trang 3

¤NIIT Instructor Inputs 12.3

This session includes exercises of Chapter 6, Chapter 7, and additional exercises

Exercise 4

A view has been defined as follows:

CREATE VIEW vwSalesOrderDetail

AS

SELECT oh.SalesOrderID, TerritoryID, TotalDue, OrderQty, ProductID

FROM Sales.SalesOrderHeader oh JOIN Sales.SalesOrderDetail od

ON oh.SalesOrderID = od.SalesOrderID

The following update command gives an error when you update the OrderQty and

TerritoryID attributes:

UPDATE vwSalesOrderDetail

SET OrderQty = 2, TerritoryID = 4

FROM vwSalesOrderDetail

WHERE SalesOrderID = 43659

Identify the problem and provide the solution

Solution

Since view contains the data from two tables, it is not possible to modify the data of two

tables through a view in a single Update statement To solve the problem, you need to

execute two Update statements as follows:

UPDATE vwSalesOrderDetail

SET OrderQty = 2

FROM vwSalesOrderDetail

WHERE SalesOrderID = 43659

UPDATE vwSalesOrderDetail

SET TerritoryID = 4

FROM vwSalesOrderDetail

WHERE SalesOrderID = 43659

Solutions to Exercises

Chapter 6

Trang 4

Exercise 5

The Store table contains the details of all the stores The HR Manager of

AdventureWorks, Inc frequently queries the Store table based on the names of the stores

He wants to create the following reports:

„ A report containing the details of all the stores that contain the word 'bike' in their names

„ A report displaying the names of all the stores containing the phrase 'Bike Store' Write the query so that the result set is retrieved very promptly

Solution

To make searching fast on the Store table, you need to create a full-text index on the table

To solve the problem, you need to execute the following statements:

SP_FULLTEXT_DATABASE ENABLE

CREATE FULLTEXT CATALOG CAT3 AS DEFAULT

CREATE FULLTEXT INDEX ON Sales.Store(Name) KEY INDEX

PK_Store_CustomerID

„ To retrieve the details of all the stores containing the word 'bike' in their names, execute the following statement:

Select * from Sales.Store Where FreeText (Name, 'Bike')

„ To display the details of all the stores containing the phrase 'Bike Store' in their names, execute the following statement:

Select * from Sales.Store Where Contains (Name, '"Bike Store"')

Exercise 6

Display the details of all the credit cards that are of type 'SuperiorCard' The CreditCard table contains a large amount of data Therefore, the query takes a long time to retrieve the details of the credit card You need to optimize the execution of the query so that the result set does not take time to be retrieved

Trang 5

¤NIIT Instructor Inputs 12.5

Solution

To retrieve the details of all the credit cards that are of type 'SuperiorCard', you need to

create a full-text index on the CreditCard table This will make the searching very fast To

solve the problem, you need to execute the following statements:

SP_FULLTEXT_DATABASE ENABLE

CREATE FULLTEXT CATALOG CAT2 AS DEFAULT

CREATE FULLTEXT INDEX ON Sales.CreditCard(CardType) KEY INDEX

AK_CreditCard_CardNumber

Select * from Sales.CreditCard Where Contains (CardType,

'"SuperiorCard"')

Exercise 7

Display the details of all the currencies that contain the words 'New' and 'Dollar' in their

names These words can be included in any order In addition, you need to make sure that

the query does not take time to execute

Solution

You need to create a full-text index on the Currency table to display the currencies

containing the words 'New' and 'Dollar' in their names Full-text index will help in make

searching very fast To solve the problem, you need to execute the following statements:

CREATE FULLTEXT INDEX ON Sales.Currency(Name) KEY INDEX

AK_Currency_Name

Select * from Sales.Currency Where FreeText (Name, '"New" And

"Dollar"')

Exercise 1

Create a batch that finds the average pay rate of the employees and then lists the details of

employees who have a pay rate less than the average pay rate

Chapter 7

Trang 6

Solution

To solve the problem, you need to execute the following statements:

DECLARE @avg_rate int

SELECT @avg_rate = AVG(rate) FROM HumanResources.EmployeePayHistory SELECT * FROM HumanResources.EmployeePayHistory

WHERE rate < @avg_rate

GO

Exercise 2

Create a function that returns the shipment date of a particular order

Solution

To solve the problem, you need to execute the following statement:

CREATE FUNCTION Sales.CalShipDate(@SalesOrderID int) RETURNS Datetime AS

BEGIN

DECLARE @shipDate Datetime SELECT @shipDate = ShipDate FROM Sales.SalesOrderHeader WHERE SalesOrderID = @SalesOrderID

IF (@shipDate IS NULL)

SET @shipDate = 0 RETURN @shipDate

END

To execute the preceding function, write the following statement:

SELECT SalesOrderID, Sales.CalShipDate(SalesOrderID) AS ShippingDate FROM Sales.SalesOrderHeader

Exercise 3

Create a function that returns the credit card number for a particular order

Trang 7

¤NIIT Instructor Inputs 12.7

Solution

To solve the problem, you need to execute the following statement:

CREATE FUNCTION Sales.DisplayCardNumber(@SalesOrderID int) RETURNS

nvarchar(25)

AS

BEGIN

DECLARE @ret nvarchar(25)

SELECT @ret = CardNumber FROM Sales.SalesOrderHeader s JOIN Sales.CreditCard c

ON s.CreditCardID = c.CreditCardID WHERE SalesOrderID = @SalesOrderID

IF (@ret IS NULL) SET @ret = 0 RETURN @ret

END

To execute the preceding function, write the following statement:

SELECT SalesOrderID, 'Credit Card Number' =

Sales.DisplayCardNumber(SalesOrderID) FROM Sales.SalesOrderHeader

Exercise 4

Create a function that returns a table containing the customer ID and the name of the

customers who are categorized as individual customers (CustomerType = 'I') The name

of the customers will be based on the format of Shortname (only the last name) and

Longname (Full name)

Solution

To solve the problem, you need to execute the following statement:

CREATE FUNCTION Sales.IndividualDetails (@format nvarchar(9))

RETURNS @tbl_Individual Table

(CustomerID int Primary Key, Name nvarchar(100))

AS

BEGIN

If (@format = 'LONGNAME')

INSERT @tbl_Individual

SELECT Cu.CustomerID, FirstName +' '+ LastName FROM Person.Contact AS C

Trang 8

JOIN Sales.Individual AS I

ON C.ContactID = I.ContactID JOIN Sales.Customer AS Cu

ON I.CustomerID = Cu.CustomerID WHERE Cu.CustomerType = 'I' ORDER BY LastName, FirstName ELSE IF (@format = 'SHORTNAME') INSERT @tbl_Individual

SELECT Cu.CustomerID, LastName

FROM Person.Contact AS C JOIN Sales.Individual AS I

ON C.ContactID = I.ContactID JOIN Sales.Customer AS Cu

ON I.CustomerID = Cu.CustomerID WHERE Cu.CustomerType = 'I' ORDER BY LastName

RETURN

END

To execute the preceding function, write the following statements:

SELECT * FROM Sales.IndividualDetails('LONGNAME')

SELECT * FROM Sales.IndividualDetails('SHORTNAME')

Trang 9

¤NIIT Instructor Inputs 12.9

This session includes solutions to additional exercises of Chapter 6

Exercise 8

The manager of the production department wants to analyze the products, which contain

the exact word 'road' in their description Write the query so that the result set does not

take a long time to execute

Solution

The ProductDescription table contains the large amount of data To retrieve the result set

very fast, you need to create a full-text index on the table To solve the problem, you need

to execute the following statements:

CREATE FULLTEXT INDEX ON Production.ProductDescription(Description)

KEY INDEX AK_ProductDescription_rowguid

Select * from Production.ProductDescription Where Contains

(Description, 'road')

Exercise 9

You need to create a report displaying the details of all the products, which contain the

word 'top' near the word 'line' in their description Write the query to retrieve the desired

output Write the query such that it does not take a long time to execute

Solution

The ProductDescription table contains the full-text index To retrieve the result set very

fast, you need to execute the following statement:

SELECT Description, ProductDescriptionID

FROM Production.ProductDescription

WHERE CONTAINS (Description, ' "top" near "line"' )

Solutions to Additional Exercises

Trang 10

Exercise 10

Display the details of all the stores having the word 'bike' in their name In addition, the report should contain the details of those stores that have the sales person ID as 277 You need to write the query so that the result set does not take a long time to be retrieved

Solution

To solve the problem, you need to execute the following statement:

Select * from Sales.Store Where SalesPersonID = 277 and Contains (Name, 'Bike')

Ngày đăng: 31/07/2014, 15:20

w