Lệnh sum Table khác bằng SQL (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
875
Table1

Ma​
|
Hoten​
|
diachi​
|
A|Nguyễn Văn A|P5|
B|Nguyễn Văn B|P6|
C|Nguyễn Văn C|P7|

Table2

Ma​
|
TenTS​
|
thanhtien​
|
A|mực|
10,000​
|
A|bút|
30,000​
|
A|giấy|
50,000​
|
A|đồ bấm|
90,000​
|
C|kim kẹp|
2,500​
|
C|ghi chú|
12,500​
|
C|thước|
1,000​
|
C|tập|
5,000​
|
C|giấy màu|
20,000​
|

Em muốn dùng câu lệnh SQL để hiển thị các Files bên Table1 và sum Fiels cột thành tiền bên Table2 thì Câu lệnh như thế nào?. mò hoài mà không ra.

Kết quả mà em muốn hiển thị

Ma​
|
Hoten​
|
diachi​
|
thành tiền​
|
A|Nguyễn Văn A|P5|
180,000​
|
B|Nguyễn Văn B|P6|
0​
|
C|Nguyễn Văn C|P7|
41,000​
|

Cám ơn các anh chị hướng dẫn.
 
Select Table1.Ma, Table1.Hoten, Table1.Diachi, Sum(Table2.thanhtien) As Sotien
From Table1 Left Join Table2 On Table1.Ma = Table2.Ma
GroupBy Table1.Ma, Table1.Hoten, Table1.Diachi;
 
Sao nó không kết nối được vậy anh. em dang lam trong Vb6
 
PHP:
  Public Function ConnectRS(ByRef vDB As ADODB.Connection, ByRef vRS As ADODB.Recordset, sSQL As String, Optional sHowMSG As Boolean = True, Optional ByRef iErrNumber As Variant, Optional ByRef sErrDescription As Variant) As Boolean
      
  On Error GoTo errH
   
      
      Set vRS = Nothing
      Set vRS = New ADODB.Recordset
    
    
      vRS.Open sSQL, vDB, adOpenStatic, adLockOptimistic
      ConnectRS = True
   
      
      Exit Function
      
  '-------------------------------------------
  errH:
      ConnectRS = False
  End Function


PHP:
    Dim MySet As ADODB.Recordset
    Dim sSQL As String
  Dim i As Long
       With LyGrid1
       .Clear
      sSQL = "Select DMHS.MaHS,DMHS.HoVaTen,DMHS.Ghichu, Sum(Data.ThanhTien) As Sotien" & _
  "From DMHS Left Join Data On DMHS.MaHS = Data.MaHS" & _
  "GroupBy DMHS.MaHS,DMHS.HoVaTen,DMHS.Ghichu"
   
      If ConnectRS(PrimeDB, MySet, sSQL) = False Then
          MsgBox "Sai"
          GoTo Exitsub
      End If
      
    For i = 1 To MySet.RecordCount
      .AddItem (MySet.Fields("MaCT") _
              & vbTab & MySet.Fields("HoVaTen") _
              & vbTab & MySet.Fields("Ghichu") _
              & vbTab & MySet.Fields("Sotien"))
              MySet.MoveNext
      Next i
  MySet.Close
  Exitsub:
      .Refresh
  .Redraw = True
     End With
 
Vấn đề của bạn là copy SQL từ Query Access sang VB6.0 chưa chỉnh những chổ cuối dòng khi xuống dòng 1 câu lệnh. Bạn thử cho 1 cách trắng vào cuối những đoạn xuống dòng đó là được.

Mã:
[COLOR=#000000][COLOR=#0000BB] [COLOR=black] sSQL [/COLOR][/COLOR][COLOR=black][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"Select DMHS.MaHS,DMHS.HoVaTen,DMHS.Ghichu, Sum(Data.ThanhTien) As Sotien " [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]_
  [/COLOR][COLOR=#DD0000]"From DMHS Left Join Data On DMHS.MaHS = Data.MaHS " [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]_
  [/COLOR][COLOR=#DD0000]"GroupBy DMHS.MaHS,DMHS.HoVaTen,DMHS.Ghichu"[/COLOR][/COLOR][/COLOR][COLOR=black]
[/COLOR]
 
Em không hiểu sao nếu sum trên 1 Table thì không sao, nhưng khi đánh sum trên 2 bảng thì không có dữ liệu nào hiện ra
 
Tốt nhất là thêm Chr(10) vào mỗi chỗ xuống dòng.
 
Em kiem tra rất kỹ các khoản trắng rồi mà sao nó cũng không kết nối được ?

PHP:
    sSQL = "Select DMHS.MaHS, DMHS.HoVaTen, DMHS.Ghichu, Sum(Data.ThanhTien) As Sotien" & _
" From DMHS Left Join Data On DMHS.MaHS = Data.MaHS" & _
" GroupBy DMHS.MaHS, DMHS.HoVaTen, DMHS.Ghichu"
 
Em kiem tra rất kỹ các khoản trắng rồi mà sao nó cũng không kết nối được ?

PHP:
    sSQL = "Select DMHS.MaHS, DMHS.HoVaTen, DMHS.Ghichu, Sum(Data.ThanhTien) As Sotien" & _
" From DMHS Left Join Data On DMHS.MaHS = Data.MaHS" & _
" GroupBy DMHS.MaHS, DMHS.HoVaTen, DMHS.Ghichu"

Khoảng trắng cuối đó bạn, bạn chưa chỉnh mà

Mã:
   sSQL = "Select DMHS.MaHS, DMHS.HoVaTen, DMHS.Ghichu, Sum(Data.ThanhTien) As Sotien[B][COLOR=red] _____[/COLOR][/B]" & _
" From DMHS Left Join Data On DMHS.MaHS = Data.MaHS[COLOR=red][B]_________[/B][/COLOR]" & _
" GroupBy DMHS.MaHS, DMHS.HoVaTen, DMHS.Ghichu"
 
Trời em phát hiện ra rồi lỗi này rồi là do em đánh sai

Cám ơn anh
ptm0412

và anh
domfootwear

Cám ơn rất nhiều.
 
Lần chỉnh sửa cuối:
Nhân tiện cho em hỏi INNER JOIN khác Left Join chỗ nào vậy các anh
 
Nhân tiện cho em hỏi INNER JOIN khác Left Join chỗ nào vậy các anh
Left join nó sẽ thể hiện tất cả các các dòng có trong bảng với bảng cần tham chiếu => các dòng trong bảng cần tham chiếu = null cũng thể hiện.
Ngược lại inner join chỉ thể hiện những dòng bảng tham chiếu có dữ liệu.
 
Anh domfootwear cho em hỏi thêm cái này nữa.
Em có tham khảo máy chương trình. có cái thì khi vừa khởi động là nó mở kết nối đến khi tắt chương trình nó mới tắt kết nối còn có cái thì khi cần nhấn vào nó mới mở kết nối.
Không biết 2 cách này khác nhau không anh.
 
Anh domfootwear cho em hỏi thêm cái này nữa.
Em có tham khảo máy chương trình. có cái thì khi vừa khởi động là nó mở kết nối đến khi tắt chương trình nó mới tắt kết nối còn có cái thì khi cần nhấn vào nó mới mở kết nối.
Không biết 2 cách này khác nhau không anh.
- Khởi động mở kết nối, khi thoát chương trình đóng kết nối có ưu điểm là khi sử dụng chương trình sẽ chạy nhanh hơn vì không tốn thời gian kết nối, chỉ tốn 1 lần lúc khởi động, tuy nhiên nó cũng sẽ chiếm bộ nhớ tùy thuộc vào dữ liệu lớn hay nhỏ Mình thường sử dụng cách này.
- Bạn tự suy luận nhé.
 
Có cách nào mà mình dùng 1 lệnh Sum mà láy được 3 tổng trên 1 Table mà theo 3 điều kiện không. Nếu được nhờ các anh hướng dẫn giúp em.

Ma1​
|
Ma2​
|
Ma3​
|
Soluong​
|
A1|
1​
|B1|
1​
|
A1|
1​
|B1|
2​
|
A1|
1​
|B2|
3​
|
A2|
2​
|B1|
4​
|
A2|
2​
|B1|
5​
|
A2|
2​
|B1|
6​
|
A3|
1​
|B1|
7​
|
A3|
1​
|B2|
8​
|
A3|
1​
|B3|
9​
|
A3|
1​
|B3|
9​
|
A3|
2​
|B2|
10​
|
A3|
2​
|B2|
11​
|
A3|
2​
|B3|
12​
|
A3|
2​
|B3|
13​
|
A3|
2​
|B3|
14​
|
Kết quả

|dk1|dk2|dk3|Ket quan
tong1|A3|1|B1|7
tong2|A3|1|B2|8
tong3|A3|1|B3|18
Cám ơn các anh chị quan tâm
 
Web KT

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

Back
Top Bottom