简体   繁体   中英

Inner Join in VB.Net

#Region "FillListView"
    Sub FillListview()
        LV.Items.Clear()
        myqry = "SELECT AccResult.StudNo,Exercises.ID from AccResult INNER JOIN Exercises ON AccResult.StudNo = Exercises.ID ORDER BY AccResult.FirstName,AccResult.YrandSec Asc;"
        mycmd = New OleDbCommand(myqry, con)
        con.Open()
        mydr = mycmd.ExecuteReader
        While mydr.Read
              With LV
                .Items.Add(mydr("StudNo"))
                With .Items(.Items.Count - 1).SubItems
                    .Add(mydr("CNumber"))
                    .Add(mydr("FirstName"))
                    .Add(mydr("LastName"))
                    .Add(mydr("YrandSec"))
                    .Add(mydr("Exer1"))
                    .Add(mydr("Exer2"))
                    .Add(mydr("Exer3"))
                    .Add(mydr("Exer4"))
                    .Add(mydr("Exer5"))
                End With
            End With
        End While
        con.Close()
    End Sub
#End Region

AccResult is the name of my first table and Exercises is the second. My PK for AccResult is StudNo and for Exercises is ID . How can I join these two tables to display in ListView ?

AccResult Table:

StudNo (PK)
CNumber
FirstName
LastName
YrandSec

Exercises Table:

ID (PK)
StudNo
Exer1
Exer2
Exer3
Exer4
Exer5

Your JOIN condition is incorrect.

AccResult INNER JOIN Exercises ON AccResult.StudNo = Exercises.ID

is joining the primary key of the parent table (AccResult.StudNo) with the primary key of the child table (Exercises.ID). You need to join the primary key of the parent table (AccResult.StudNo) with the foreign key of the child table (Exercises.StudNo), ie,

AccResult INNER JOIN Exercises ON AccResult.StudNo = Exercises.StudNo

Not sure if I get the question correctly, but it looks like the query only select to columns :

myqry = "SELECT AccResult.StudNo,Exercises.ID from AccResult..."

then the code try to display all columns. Try to select all columns instead :

myqry = "SELECT * from AccResult..."

尝试这个:

myqry = "SELECT AccResult.StudNo,Exercises.ID, Exer1, Exer2, Exer3, Exer4, Exer5 from AccResult INNER JOIN Exercises ON AccResult.StudNo = Exercises.ID ORDER BY AccResult.FirstName,AccResult.YrandSec Asc;"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM