3在一个查询中选择其中一个条件具有多个表的

时间:2019-07-15 16:08:56

标签: vb.net datagridview oledb

我使用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

我真的希望我已经尽可能清楚了。如果没有,请立即询问,我会尽力而为。这也是我在这里的第一篇文章,希望我没有做错任何事情。

1 个答案:

答案 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