Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果vb.net中的列名不同,是否可以使用左外联接sql语句_Sql_Vb.net_Winforms_Join - Fatal编程技术网

如果vb.net中的列名不同,是否可以使用左外联接sql语句

如果vb.net中的列名不同,是否可以使用左外联接sql语句,sql,vb.net,winforms,join,Sql,Vb.net,Winforms,Join,我在VB.net 2013,windows窗体应用程序中工作,我需要做一个左侧的join sql语句,这是我第一次尝试它。我的问题是,如果两个表的列名不同,但数据相同,您是否可以交叉引用这两个表。在我的例子中,我有表A和表B。TableA有一个名为“JobNum”的列,TableB有一个名为“JobNumber”的列。考虑到这一点,仍然可以执行join语句。这是我的密码: 'load Job List Try 'set/open sql connection

我在VB.net 2013,windows窗体应用程序中工作,我需要做一个左侧的join sql语句,这是我第一次尝试它。我的问题是,如果两个表的列名不同,但数据相同,您是否可以交叉引用这两个表。在我的例子中,我有表A和表B。TableA有一个名为“JobNum”的列,TableB有一个名为“JobNumber”的列。考虑到这一点,仍然可以执行join语句。这是我的密码:

 'load Job List
    Try
        'set/open sql connection
        Using conn1 As New SqlConnection(connstring)
            conn1.Open()
            'Using comm1 As SqlCommand = New SqlCommand("Select JobNum, Shear from Production.dbo.[Floor Cell Jobs\Shears]", conn1)
            Using comm1 As SqlCommand = New SqlCommand("SELECT JobNum FROM Production.dbo.[Floor Cells Jobs\Shears] LEFT OUTER JOIN Production.dbo.tblFCOrdered ON Production.dbo.[Floor Cells Jobs\Shears].JobNum = Production.dbo.fcOrdered.JobNumber", conn1)
                'dim the variable rs as an sql datareader and execute that reader with sql comm1
                Dim rs As SqlDataReader = comm1.ExecuteReader
                'dim dt as a new datatable and load it into data set rs
                Dim dt As DataTable = New DataTable
                dt.Load(rs)

                'set the combobox vale and display members
                CBJob1.ValueMember = "JobNum"
                CBJob1.DisplayMember = "JobNum"

                'set the datasource for combobox CBJob1
                CBJob1.DataSource = dt
            End Using
        End Using

当然,你就这么做吧

SELECT
  *
FROM Table1 A
left join Table2 B on (A.JobNum = B.JobNumber)

您可以通过在表名后指定一些值来为表指定一个“昵称”。在我的例子中,Table1现在也被称为A。这使得引用正确的表变得非常简单:-)我将其更改为您的代码,代码正在运行,但tableB中的作业编号仍然显示在绑定到表A的下拉框中。我希望绑定TableA的组合框不显示作业在表B中,我应该使用不同的sql join语句而不是left join吗?“从Production.dbo.[Floor Cell Jobs\Shears]中选择*a left join Production.dbo.tbl记录B on(a.JobNum=B.JobNumber)@切达我阅读select查询的方式,您仍然只能看到表A中的结果,因为您没有从表B中选择任何内容。仅通过连接到左侧的表,将不会为您提供任何新数据,除非您在select查询中选择:-)良好做法;-)