PDA

View Full Version : Truy vấn CSDL bằng sql?



tlkhongkien
22-05-2005, 09:11
Mình có một table có các record là các câu hỏi như sau

MACAU CHUDE ND DIEM
1 hinhhoc ....... 2
2 daiso ....... 4
3 giaitich ....... 5
.................
100 daiso ....... 2


(DIEM là điểm số của mỗi câu hỏi)
Mình muốn dùng câu truy vấn sql để lấy ra 50 câu sao cho tổng điểm của 50 câu này là 60 điểm thì viết như thế nào?

Rất mong được giúp đỡ. Cám ơn

DarkKT
27-05-2005, 10:24
Tạo ra một bảng ngẫu nhiên có 50 câu
select top 50 * from table_name order by newId()
Nếu thêm compute sum(diem) dạng sau thi nó cho biết tổng số điểm của 50 câu đó. Nhưng tổng số điểm đó chưa chắc bằng 60 được.
Vấn đề ở chỗ nếu như lấy 49 câu rồi thì lấy thêm 1 câu sao cho nó có sum(diem) = 50 cũng khó vì nếu như điểm của bạn có thang từ 1->7 thì nhiều khả năng tổng số điểm của 49 câu đã lớn hơn 60 điểm rồi. Mình nghĩ bước đầu tiên là lọc ra các bảng có số điểm bằng nhau. Rồi sau đó dùng thuật toán lấy làm sao cho tổng số điểm của nó bằng với số điểm bạn cần là được. Còn thang điểm từ 1->2 chắc bạn cũng đã biết cách giải quyết.

dinhbaochau
27-05-2005, 10:26
Tui có một đoạn Script sau dùng để tạo một connecstring đến ORACLE như sau.
--------------------------------------------------------------------

<%@ Language=VBScript %>
<html>
<head>
<title>Oracle Query</title>
</head>
<body>
<center>
<p>
<%
Dim conStr,Conn,rs,sql
'Tao connection su dung ODBC
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "dsn=pncdb;uid=pn;pwd=pn;"
'Tao Connection
Set Conn = Server.CreateObject("ADODB.Connection")
'Mo ket noi den CSDL
Conn.Open conStr
'Dinh nghia cau truy van
'Set objRs = objConn.Execute("SELECT * FROM DEMO.EMPLOYEE")
'sql = " SELECT * FROM |ITEM_CATEGORIES|"
'Thuc hien cau truy van tren CSDL va luu ket qua trong bien rs
Set rs = Conn.Execute(" SELECT * FROM ITEM_CATEGORIES")
'Hien thi tren trang Web
Do while not rs.EOF

Response.Write rs("ICA_ID") &rs("ICA_CODE") &rs("NAME") &rs("CLASS") &rs("DESCRIPTION") &rs("STATUS") &rs("CREATED_BY") &rs("CREATE_DATE") &rs("MODIFIED_BY") &rs("MODIFY_DATE") &rs("ICA_ID_CHILD_OF") &rs("ICA_TYPE") &rs("ICA_NUMBER") &rs("WBS_LEVEL") &rs("IS_PARENT") &rs("ACO_ID") &"<br>"

rs.moveNext
Loop
' Dong ket noi voi CSDL
rs.close
Conn.close
Set rs = nothing
Set Conn = nothing
%>
"<br>"

</body>
</html>
--------------------------------------------------------------------
Dùng để hiển thị tất cả các thông tin một Table trong CSDL của Oracle. Nhưng hiện tại tôi muốn dùng Trang ASP với đoạn Sript trên để xuất ra một file Excel lưu lại trên ổ cứng người dùng, và tên file tạo ra là lấy ngày tạo file, Ví dụ như ngày 20-05-2005 thì được tạo một file là 20052005.xls
--------------------------------------------------------------------
Tôi có đoạn Script sau dùng để kết hợp với đoạn trên để hoàn chỉnh.
---------------------------------------------------------------------
Tên là: Excel.ASP

<%@ LANGUAGE="VBSCRIPT" %>
<%
' Create Object
Set MyExcelChart =CreateObject("Excel.Sheet")

' show or dont show excel to user, TRUE or FALSE
MyExcelChart.Application.Visible = True

' populate the cells
MyExcelChart.ActiveSheet.Range("B2:k2").Value = Array("Week1", "Week2", "Week3", "Week4", "Week5", "Week6", "Week7", "Week8", "Week9", "Week10")
MyExcelChart.ActiveSheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
MyExcelChart.ActiveSheet.Range("B4:k4").Value = Array("10", "10", "8", "27", "33", "37", "50", "54", "10", "10")
MyExcelChart.ActiveSheet.Range("B5:k5").Value = Array("23", "3", "86", "64", "60", "18", "5", "1", "36", "80")
MyExcelChart.ActiveSheet.Cells(3,1).Value="Internet Explorer"
MyExcelChart.ActiveSheet.Cells(4,1).Value="Netscape"
MyExcelChart.ActiveSheet.Cells(5,1).Value="Other"

' Select the contents that need to be in the chart
MyExcelChart.ActiveSheet.Range("b2:k5").Select

' Add the chart
MyExcelChart.Charts.Add
' Format the chart, set type of chart, shape of the bars, show title, get the data for the chart, show datatable, show legend
MyExcelChart.activechart.ChartType = 97
MyExcelChart.activechart.BarShape =3
MyExcelChart.activechart.HasTitle = True
MyExcelChart.activechart.ChartTitle.Text = "Visitors log for each week shown in browsers percentage"
MyExcelChart.activechart.SetSourceData MyExcelChart.Sheets("Sheet1").Range("A1:k5"),1
MyExcelChart.activechart.Location 1
MyExcelChart.activechart.HasDataTable = True
MyExcelChart.activechart.DataTable.ShowLegendKey = True


' Save the the excelsheet to chart.xls
MyExcelChart.SaveAs "c:\chart.xls"


%>
<HTML>
<HEAD>
<TITLE>MyExcelChart</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
------------------------------------------------------

Nhưng khi tôi chạy file Excel.asp thì nó báo lỗi như sau:

---------------------
# Error Type:
Microsoft VBScript runtime (0x800A0046)
Permission denied: 'CreateObject'
/Excel.asp, line 5

# Browser Type:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3

# Page:
GET /Excel.asp
---------------------------------------------------------------------

Như vậy nó báo lỗi là gì nhỉ! tôi thử sửa lại là server.CreateOject() nhưng vẫn báo lổi là không tạo được Oject.
Tôi chạy trên IIS6 và WinXP

Cảm phiền các cao thủ ra tay chỉ giáo.