从多个表中读取数据的问题[重复]

Posted

技术标签:

【中文标题】从多个表中读取数据的问题[重复]【英文标题】:Problem in reading data from multiple tables [duplicate] 【发布时间】:2011-09-10 16:22:53 【问题描述】:

可能重复:Problem in datareader retrieving data

我在数据库中有 Memberships 和 Bookings 表,其中包含一个属性 cust_id,它是 Memberships 中的主键和 Bookings 中的引用键。当我执行数据读取器时,我希望它从成员表中读取 cust_id 值,但它正在从预订表中读取它.....

我加入表格的一个主要目的是有其他验证(不关心这个问题..刚刚提到加入表格的原因)需要预订表格中的属性,例如我必须检查是否新的预订是否与一些已经预订的重叠......

我在 Memberships 表中有 3 个唯一的 cust_id 值,即 csc-01、csc-02、csc-03 和 Bookings 表中的 6 个 Bookings 都适用于 csc-01 和 csc-02,并且没有为具有 cust_id 的客户进行的预订csc-03...当我从 Memberships 中选择时,即 Memberships.cust_id 然后,因为我使用消息框来检查结果,在 MessageBox.Show(str1 & "," & str3 & String.Equals(str1, str3 )) str3 从不显示值 csc-03 但它存在于 MEmberships 表中...我希望 bookchk 遍历 Memberships.cust_id 中的所有值,以便每次检查客户是否具有会员资格... .希望你现在明白了

我的查询是:

str2 = "select Memberships.cust_id from Memberships, Bookings where   Memberships.cust_id  = Bookings.cust_id"
Dim cmd2 As New SqlCommand(str2, con)
con.Open()

Dim bookchk As SqlDataReader = cmd2.ExecuteReader  
While bookchk.Read()
Dim str1 As String = MskdTxtCustId.Text
Dim str3 As String = bookchk("cust_id")
MessageBox.Show(str1 & "," & str3 & String.Equals(str1, str3))

End While
bookchk.Close()
con.Close()

【问题讨论】:

亲爱的,如果可以的话,请回答...我的问题没有解决,所以我单独发布了这个问题 【参考方案1】:
select Memberships.cust_id from Memberships, Bookings where   
Memberships.cust_id  = Bookings.cust_id
union
Memberships.cust_id from Memberships where 
not exists (select Bookings.cust_id from Bookings where
Memberships.cust_id  = Bookings.cust_id)

如果在第一次选择中添加更多列,在第二次中添加常量0或空白,行数必须相等

【讨论】:

【参考方案2】:

所以你想看看没有预订的 csc-03。答案在重复的问题中——LEFT JOIN

SELECT Memberships.cust_id, Bookings.*
FROM Memberships LEFT JOIN Bookings
     ON Memberships .cust_id = Bookings.cust_id

【讨论】:

Using Left Join 它已经开始从 Memberships 表中读取 cust_id 的所有值,但它正在执行多次...我的意思是当我在消息框上按 OK 时,它再次显示 csc-01,然后是 3 csc-02 的时间,然后 csc-03 的时间......我可以知道这个左连接到底是做什么的吗?? 它正在循环预订。 csc-01 有多个预订,csc-02 也是如此,然后 csc-03 没有预订。我建议您在从 VB.net 调用之前,在 SQL 控制台中运行 SQL 语句,直到您了解基本 SQL 为止 不能只从 Memberships 中读取而不遍历 Bookings 吗???

以上是关于从多个表中读取数据的问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 vb.net 数据阅读器中的多个表中读取

如何将重复的标签/字符串数据插入表中

oracle中只读取一条数据,怎么写

从php中的csv文件读取大数据[重复]

使用POI读取EXCEL中的数据如何获得表中实际数据的行数?

逐页读取Oracle表中的所有数据