PDA

View Full Version : Query nao de thuc hien yeu cau sau



punachino
25-05-2005, 16:55
Co mot danh sach cac khach hang nhu sau

Ort Customer
Hanoi Long
Hanoi Hai
....

Tim cac cap khach hang o cung mot Ort voi yeu moi cap chi xuat hien mot lan va khong co doi cho thu tu vi du (Long,Hai) roi thi khong duoc (Hai,Long)

canIT
26-05-2005, 12:49
Thứ nhất, bạn dùng câu truy vấn :
select ort, customer
from Table
group by ort, customer
order by ort, customer
Để lấy dữ liệu theo yêu cầu của bạn. Sau đó dùng ResultSet để lấy mỗi lần 2 cặp record chẳng hạn ( rs.next() 2 lần). Sau đó bạn so sánh nếu 2 cặp đó có cùng Ort thì view ra customer1,customer2. Nếu không, thì dùng gán vào biến temp , rồi tiếp tục so sánh. Nói chung là bạn phải debug thuật toán này chút xíu, sẽ có kết quả.

satthuhuydiet
26-05-2005, 12:56
Co mot danh sach cac khach hang nhu sau

Ort Customer
Hanoi Long
Hanoi Hai
....

Tim cac cap khach hang o cung mot Ort voi yeu moi cap chi xuat hien mot lan va khong co doi cho thu tu vi du (Long,Hai) roi thi khong duoc (Hai,Long)
Đọc mãi mới hiểu được cậu viết tiếng gì, lần sau viết VN dùm cái chán đời qúa


Thứ nhất, bạn dùng câu truy vấn :
select ort, customer
from Table
group by ort, customer
order by ort, customer
Để lấy dữ liệu theo yêu cầu của bạn. Sau đó dùng ResultSet để lấy mỗi lần 2 cặp record chẳng hạn ( rs.next() 2 lần). Sau đó bạn so sánh nếu 2 cặp đó có cùng Ort thì view ra customer1,customer2. Nếu không, thì dùng gán vào biến temp , rồi tiếp tục so sánh. Nói chung là bạn phải debug thuật toán này chút xíu, sẽ có kết quả.
Cậu được học mệnh đề Group by ở đâu vậy, có 2 field mà group by cả 2 luôn thì ra cái quái gì hả.

canIT
26-05-2005, 13:01
Bạn đúng là Satthuhuydiet. Thì cứ hiểu đại khái ý tưởng là như vậy. Nếu không cần group thì bỏ, sử dụng tùy trường hợp thôi. Trường tôi học có khối thằng mơ mà không được đấy chứ!

bete
26-05-2005, 13:06
Tui nghĩ mình có thể xài:

select t1.ort, t1.customer, t2.customer
from table_name t1, table_name t2
where t1.ort = t2.ort
and t1.customer < t2.customer

(chỉ đúng nếu không có 2 khách hàng trùng tên; hoặc 2 khách hàng cùng Ort
thì không trùng tên)

-thân

satthuhuydiet
26-05-2005, 13:12
Bạn đúng là Satthuhuydiet. Thì cứ hiểu đại khái ý tưởng là như vậy. Nếu không cần group thì bỏ, sử dụng tùy trường hợp thôi. Trường tôi học có khối thằng mơ mà không được đấy chứ!
Ok good, cố gắng không mơ :D


Tui nghĩ mình có thể xài:

select t1.ort, t1.customer, t2.customer
from table_name t1, table_name t2
where t1.ort = t2.ort
and t1.customer < t2.customer

(chỉ đúng nếu không có 2 khách hàng trùng tên; hoặc 2 khách hàng cùng Ort
thì không trùng tên)

-thân
MSSQL systax Errorrrrrrrrrrrrrrrrrrrrr :D

punachino
26-05-2005, 13:59
Có một bảng :

Ort Name
Hn Tien
Hn Tuan
Hn Binh
Hp Lan
Hp Phuong

Từ bảng này tạo làm sao quey ra một bảng ( Ort, Name1,Name2 ) gồm các cặp Name1, Nam2 ở cùng một nơi, với điều kiện mỗi cặp chỉ xuất hiện một làn và không được thay đổi vị trí Name1, Name2 cho nhau
Ví dụ Ort Name 1 Name2
Hn Tien Tuan
Hn Tien Binh
Hn Binh Tien === dong nà y không thoả mãna tm

Sorry khong tim duoc bo go tieng viet

bete
27-05-2005, 13:19
select t1.ort, t1.customer, t2.customer
from table_name t1, table_name t2
where t1.ort = t2.ort
and t1.customer < t2.customer

=> MSSQL systax Errorrrrrrrrrrrrrrrrrrrrr

Quên nói là tui viết theo cú pháp của Oracle. Không biết MSSQL báo sai chỗ nào (có lẽ là chỗ "t1.customer < t2.customer" hay là chỗ joinning !?)
=> cần sửa lại cho phù hợp với cú pháp của MSSQL

phatnq2003
28-05-2005, 13:35
Co mot danh sach cac khach hang nhu sau

Ort Customer
Hanoi Long
Hanoi Hai
....

Tim cac cap khach hang o cung mot Ort voi yeu moi cap chi xuat hien mot lan va khong co doi cho thu tu vi du (Long,Hai) roi thi khong duoc (Hai,Long)

SELECT ISNULL(A.ort, ISNULL(B.ort, '') AS ort, ISNULL(A.customer, ISNULL(B.customer, '') AS customer1, ISNULL(B.customer, ISNULL(A.customer, '') AS customer2
FROM Table1 A FULL JOIN Table2 B
ON A.ort = B.ort