我使用Microsoft Access。在这里,我实现OleDb并显示您的连接字符串。我的数据库包含3个表。计算机,用户和“连接”表Computerusers。一个用户可以拥有多台PC。我的目标是在DataGridView中读取计算机的每个组件及其ID,并在最后一列中最后一行的计算机旁边,读取该行中计算机的用户。为此,我需要查询,该查询我已经搜索了很长时间了,但是除了group concat之外什么都没有找到,这对于Access来说似乎并不现实,而且由于我对编程几乎是全新的,因此对于它来说有点太复杂了我,或者至少没有找到关于VB.NET的任何对此有很好解释的视频/帖子
导入System.Data.OleDb
ConnectionString: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Persist Security Info=False;
表用户:
us_id | us_firstname | us_lastname | us_departement
1 | Michael | Rotter | IT
2 | Peter | Parker | Photographing
3 | Jonas | Klos | Director
台式计算机
co_id | co_name | co_gpu | co_cpu (6 more columns to this
1 | PC090 | 1080 | 2700X table, ram, psu, etc)
2 | PC040 | 1070 | R5 1600
3 | PC066 | 1060 | i5-6600K
表计算机用户:
co_id | us_id
1 | 1
1 | 2
2 | 2
3 | 3
我希望结果如何(故意忽略ram,psu等)
co_id | co_gpu | co_cpu | us_firstname
1 | 1080 | 2700X | Michael, Peter
2 | 1070 | R5 1600 | Peter
3 | 1060 | i5-6600K | Jonas
我用于简单地将所有组件从计算机中读取到DataGridView中的代码
Dim con as new oledbconnection(conn), cmd as new oledbcommand(Nothing,
con)
Dim reader as oledbdatareader
cmd.commandtext = "SELECT * FROM Computer"
con.open
reader = cmd.executereader
DataGridView1.Rows.Clear
While reader.read
DataGridView1.Rows.Add(reader("co_id"),
reader("co_name"),
reader("co_gpu"),
reader("co_cpu"))
End While
Con.Close
Reader.Close
我真的希望我已经尽可能清楚了。如果没有,请立即询问,我会尽力而为。这也是我在这里的第一篇文章,希望我没有做错任何事情。
答案 0 :(得分:0)
您需要加入表格。根据提供的描述,您的查询应该看起来像这样:
SELECT ComputerUsers.*, Users.*, Computers.* FROM (ComputerUsers INNER JOIN Computers ON ComputerUsers.co_id = Computers.co_id) INNER JOIN Users ON ComputerUsers.us_id = Users.us_id