从多个表读取数据时出现问题

时间:2011-09-10 16:22:54

标签: sql-server vb.net datareader

  

可能重复:
  Problem in datareader retrieving data

我在数据库中有成员资格和预订表,其中包含属性cust_id,该属性是会员资格中的主键和预订中的参考密钥。当我执行数据读取器时,我希望它从成员资格表中读取cust_id值,但它是从预订表中读取它.......

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

我在会员资格表中有3个唯一的cust_id值,即csc-01,csc-02,csc-03和预订表中的6个预订均为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()

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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或空白,行数必须相等

相关问题