Truy vấn SQL

Liên hệ QC

MinhKhai

Giải pháp Ếc-xào
Tham gia
16/4/08
Bài viết
934
Được thích
571
Gửi các anh chị, em gửi yêu cầu về SQL ở đây không biết có đúng không, nhưng đang cần hỏi nên đành vậy
Trước hết em xin nói luôn là em chưa học và không biết về SQL. Do vướng mắc như dưới nên mới đọc về SQL Server vài hôm nay.

1. Em có SQL DB với bảng dữ liệu như hình dưới và bảng được cập nhật dữ liệu bằng 1 app trên Android (người khác viết). Em cũng có sẵn Database Mail với profile là AutoSend

Capture.PNG
2. Em dùng lệnh sau để truy vấn
SELECT [dbo].[Q_UserEvaluate].UserID, [dbo].[Q_UserEvaluate].Score, [dbo].[Q_UserEvaluate].Createddate
FROM [dbo].[Q_UserEvaluate]
WHERE [dbo].[Q_UserEvaluate].Createddate > (select dateadd(s,-10,getdate())) AND [dbo].[Q_UserEvaluate].Score = '1_3'
3. Yêu cầu
Nhờ các anh chị tạo giúp cái thủ tục để em có thể đặt trong 1 job hoạt động trong mỗi 10s nhằm tự động gửi kết quả từ truy vấn trên
Nếu có kết quả truy vấn thì gửi email
+ Bằng profile nói trên
+ Người nhận và subject là chuỗi có sẵn
+ Body: là kết quả của việc lệnh truy vấn
Người thực hiện: UserID
Kết quả thực hiện: Score
Thời gian thực hiện: Createddate

Xin cảm ơn các anh chị
 
Gửi các anh chị, em gửi yêu cầu về SQL ở đây không biết có đúng không, nhưng đang cần hỏi nên đành vậy
Trước hết em xin nói luôn là em chưa học và không biết về SQL. Do vướng mắc như dưới nên mới đọc về SQL Server vài hôm nay.

1. Em có SQL DB với bảng dữ liệu như hình dưới và bảng được cập nhật dữ liệu bằng 1 app trên Android (người khác viết). Em cũng có sẵn Database Mail với profile là AutoSend

View attachment 226171
2. Em dùng lệnh sau để truy vấn
SELECT [dbo].[Q_UserEvaluate].UserID, [dbo].[Q_UserEvaluate].Score, [dbo].[Q_UserEvaluate].Createddate
FROM [dbo].[Q_UserEvaluate]
WHERE [dbo].[Q_UserEvaluate].Createddate > (select dateadd(s,-10,getdate())) AND [dbo].[Q_UserEvaluate].Score = '1_3'
3. Yêu cầu
Nhờ các anh chị tạo giúp cái thủ tục để em có thể đặt trong 1 job hoạt động trong mỗi 10s nhằm tự động gửi kết quả từ truy vấn trên
Nếu có kết quả truy vấn thì gửi email
+ Bằng profile nói trên
+ Người nhận và subject là chuỗi có sẵn
+ Body: là kết quả của việc lệnh truy vấn
Người thực hiện: UserID
Kết quả thực hiện: Score
Thời gian thực hiện: Createddate

Xin cảm ơn các anh chị
để làm bạn cần viết proc + tạo job trên sql server.

Proc gửi mail thì trên mạng nhiều mà bạn, bạn phải parse truy vấn sang html
 
Lần chỉnh sửa cuối:
Bạn hướng dẫn mình thêm với nhé
Procedure gửi mail thì trên mạng đúng là nhiều nhưng mình không tìm thấy cái mà nó duyệt và gửi theo từng kết quả truy vấn được.
Mình vẫn còn gà mờ, trong khi forum này lại không phải chuyên về SQL.
Xin cảm ơn anh chị
 
Bạn hướng dẫn mình thêm với nhé
Procedure gửi mail thì trên mạng đúng là nhiều nhưng mình không tìm thấy cái mà nó duyệt và gửi theo từng kết quả truy vấn được.
Mình vẫn còn gà mờ, trong khi forum này lại không phải chuyên về SQL.
Xin cảm ơn anh chị
Ban chua chiu tim thoi
SQL:
CREATE PROC PP_TEN_PROCEDURE
AS
DECLARE @tableHTML NVARCHAR(MAX)
IF EXISTS (SELECT 1 FROM [dbo].[Q_UserEvaluate] WHERE Createddate > (select dateadd(s,-10,getdate())) AND Score = '1_3')
BEGIN
    SET @tableHTML =
    N'<table>' +
    N'<tr><th>UserID</th>
    <th>Score</th>
    <th>Createddate</th>
    </tr>' +
    CAST ( (
    SELECT td = UserID,'',
    td = Score,'',
    td = Createddate,''
    FROM [dbo].[Q_UserEvaluate]
    WHERE Createddate > (select dateadd(s,-10,getdate())) AND Score = '1_3'
    FOR XML PATH('tr'), TYPE
    ) AS NVARCHAR(MAX) ) +
    N'</table>'


    EXEC msdb.dbo.sp_send_dbmail
    @recipients='yourfriend@Adventure-Works.com', 
    @subject = 'Work Order List', 
    @body = @tableHTML, 
    @body_format = 'HTML' ; 
END

 
Ngoài gửi dạng HTML, bạn có thể gửi như file đính kèm với dạng CSV hoặc Tab delimiter cho gọn và dễ import vào CSDL khác để xử lý.

@query =" Select ....From...."
@attach_query_result_as_file=1
 
Ban chua chiu tim thoi
SQL:
CREATE PROC PP_TEN_PROCEDURE
AS
DECLARE @tableHTML NVARCHAR(MAX)
IF EXISTS (SELECT 1 FROM [dbo].[Q_UserEvaluate] WHERE Createddate > (select dateadd(s,-10,getdate())) AND Score = '1_3')
BEGIN
    SET @tableHTML =
    N'<table>' +
    N'<tr><th>UserID</th>
    <th>Score</th>
    <th>Createddate</th>
    </tr>' +
    CAST ( (
    SELECT td = UserID,'',
    td = Score,'',
    td = Createddate,''
    FROM [dbo].[Q_UserEvaluate]
    WHERE Createddate > (select dateadd(s,-10,getdate())) AND Score = '1_3'
    FOR XML PATH('tr'), TYPE
    ) AS NVARCHAR(MAX) ) +
    N'</table>'


    EXEC msdb.dbo.sp_send_dbmail
    @recipients='yourfriend@Adventure-Works.com',
    @subject = 'Work Order List',
    @body = @tableHTML,
    @body_format = 'HTML' ;
END

Cảm ơn bạn nhé. Để mình test rồi hỏi thêm bạn
Bài đã được tự động gộp:

Ngoài gửi dạng HTML, bạn có thể gửi như file đính kèm với dạng CSV hoặc Tab delimiter cho gọn và dễ import vào CSDL khác để xử lý.

@query =" Select ....From...."
@attach_query_result_as_file=1
Cảm ơn chuyên gia Access nhé. Do trình độ hạn chế nên mình cũng chỉ dùng đến plain text là được. Sau này mới tìm hiểu thêm
 
Web KT

Bài viết mới nhất

Back
Top Bottom