banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Hỏi về sự khác nhau giữa MySQL và SQL Server  XML
  [Question]   Hỏi về sự khác nhau giữa MySQL và SQL Server 27/05/2007 10:36:33 (+0700) | #1 | 61805
[Avatar]
conmeomeo
Member

[Minus]    0    [Plus]
Joined: 13/01/2007 23:39:46
Messages: 28
Offline
[Profile] [PM] [WWW] [Yahoo!]
+ Mình thường dùng CSDL MySQL để làm việc với PHP, nay mình muốn chuyển sang CSDL SQL. Mình cài bản Microsoft SQL Server 2000 Personal Edition (cài đặt bình thường không có gì đặc biệt cả).
+ Tất cả các câu lệnh mình viết cho MySQL khi chuyển qua SQL đều chạy được chỉ có cái LIMIT này là không chạy được.
câu lệnh: SELECT * FROM tbl_news LIMIT 5,10
mình muốn lấy từ dữ liệu thứ 5 tới thứ 10, cái này trong MySQL thì chạy ra kết quả bình thường nhưng khi chạy thử nó trong SQL thì nó báo lỗi cú pháp ngay chổ LIMIT.
1. Cho mình hỏi là trong SQL nó có lệnh LIMIT này không hay là do mình cài SQL không đúng nên nó không chạy.
2. Có cách nào khác trong SQL để giải quyết vấn đề trên không?
www.SanGiaoDichWeb.com
[Up] [Print Copy]
  [Question]   Hỏi về sự khác nhau giữa MySQL và SQL Server 27/05/2007 12:07:18 (+0700) | #2 | 61815
[Avatar]
gsmth
Elite Member

[Minus]    0    [Plus]
Joined: 15/02/2007 13:25:36
Messages: 749
Offline
[Profile] [PM] [WWW] [Yahoo!]
1. T-SQL/SQL Server 2000 không có
2.a. upgrade lên SQL 2005 để dùng hàm Row_Number()...
2.b. google smilie
[Up] [Print Copy]
  [Question]   Hỏi về sự khác nhau giữa MySQL và SQL Server 27/05/2007 14:04:12 (+0700) | #3 | 61831
[Avatar]
YHT
Member

[Minus]    0    [Plus]
Joined: 21/04/2006 13:29:33
Messages: 173
Location: HCM
Offline
[Profile] [PM] [WWW] [Yahoo!]
Trong SQL Server (T-SQL) bạn có thể dùng Cursor để giải quyết vấn đề này. Nghiên cứu thêm về cách xài cursor nhé ( chỉ cần FETCH đúng row mình cần).
--YHT
[Up] [Print Copy]
  [Question]   Re: Hỏi về sự khác nhau giữa MySQL và SQL Server 28/05/2007 05:18:51 (+0700) | #4 | 61929
[Avatar]
conmeomeo
Member

[Minus]    0    [Plus]
Joined: 13/01/2007 23:39:46
Messages: 28
Offline
[Profile] [PM] [WWW] [Yahoo!]
+ Cảm ơn một số gợi ý của các bạn
+ Nhưng vấn đề của mình là chuyển đổi CSDL nên không thể code lại toàn bộ các cấu trúc hoặc các câu SQL đã có sẵn. Mình chỉ gặp vấn đề ở chổ này mà thôi (toàn bộ các phần khác chạy tốt):
Mình có hàm run_sql:
function run_sql($m_SQL){
if($rs=mssql_query($m_SQL)){
return $rs;
}
return false;
}
Khi chạy chỉ cần gọi:
$my_rs=run_sql("SELECT * FROM tbl_news LIMIT 5,10");

* Với MySQL thì nó chạy tốt còn với SQL thì nó báo lỗi không có từ khoá LIMIT.
+ Mình chỉ có thể sửa trong hàm run_sql mà thôi. Ví dụ với câu SQL như trên mình có thể tách ra để có được dữ liệu đầu vào là câu SQL: SELECT * FROM tbl_news và 2 dữ liệu là số 5 và số 10.
+ Với những đối số trên kết quả mình mong muốn là hàm run_sql trả về 1 resource trỏ đến dữ liệu từ thứ 5->10. Chương trình sau đó sẽ sử dụng cái resource này cho những công việc khác là ok.
+ Mình cũng không chuyên sâu về SQL nên gặp rắc rối về cách viết code để được kết quả như ý muốn, vậy bạn nào biết cách giải quyết vấn đề này xin giúp đỡ.
www.SanGiaoDichWeb.com
[Up] [Print Copy]
  [Question]   Hỏi về sự khác nhau giữa MySQL và SQL Server 28/05/2007 11:29:03 (+0700) | #5 | 61966
[Avatar]
YHT
Member

[Minus]    0    [Plus]
Joined: 21/04/2006 13:29:33
Messages: 173
Location: HCM
Offline
[Profile] [PM] [WWW] [Yahoo!]
Bạn tạo 1 stored procedure trong SQL Server, trong đó sẽ sử dụng cursor để FETCH ra thông tin cần thiết, xong rồi truyền cái lệnh EXEC cái proc đó vô hàm run_sql là xong.
--YHT
[Up] [Print Copy]
  [Question]   Hỏi về sự khác nhau giữa MySQL và SQL Server 30/05/2007 07:05:51 (+0700) | #6 | 62297
pokemon5gam
Member

[Minus]    0    [Plus]
Joined: 08/10/2003 05:45:18
Messages: 7
Offline
[Profile] [PM]
Bạn có thể dùng between.
Ví dụ: SELECT *
FROM Test
WHERE TheId BETWEEN 5 AND 10
[Up] [Print Copy]
  [Question]   Hỏi về sự khác nhau giữa MySQL và SQL Server 30/05/2007 08:02:05 (+0700) | #7 | 62304
ohyesssvn
Member

[Minus]    0    [Plus]
Joined: 24/12/2004 06:31:24
Messages: 3
Offline
[Profile] [PM]
$dau=5; $cuoi=10;

$sql= " SELECT TOP ". $cuoi-$dau." id, field1,field2,field1 FROM table
WHERE id NOT IN ( SELECT TOP ". $dau. " id FROM table)";
[Up] [Print Copy]
  [Question]   Re: Hỏi về sự khác nhau giữa MySQL và SQL Server 30/05/2007 21:24:40 (+0700) | #8 | 62386
[Avatar]
conmeomeo
Member

[Minus]    0    [Plus]
Joined: 13/01/2007 23:39:46
Messages: 28
Offline
[Profile] [PM] [WWW] [Yahoo!]
+ Vấn đề khúc mắc là ở chỗ câu SQL đầu vào chính xác là luôn có dạng:
SELECT * FROM ten_bang_du_lieu LIMIT 5,10
do nó được viết cho MySQL
+ Như vậy là muốn sử dụng được các câu SQL mà có sử dụng đến ID hoặc Field thì lại phải làm động tác giả là Fetch tất cả các field trong bảng dữ liệu ra rồi còn phải kiểm tra field nào là khóa chính mà động tác này thì hơi bị lâu mà cái hàm này lại là hàm chính mỗi khi cần CSDL do đó nó được gọi nhiều lần lắm.
+ Nếu SQL 2000 không hỗ trợ sẵn tính năng này thì các phiên bản mới hơn có cách nào để thực hiện công việc này dễ hơn không.
+ Vậy cho mình hỏi thông thường các bạn sử dụng CSDL SQL (loại nào cũng được) thì khi phân trang trên trang web các bạn dùng cách gì để lấy đúng dữ liệu mong muốn trên từng trang.
www.SanGiaoDichWeb.com
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|