【问题标题】:Join more than two tables with "not in" clause使用“not in”子句连接两个以上的表
【发布时间】:2015-02-24 12:47:00
【问题描述】:

您能否告诉我在哪里可以 INNER JOIN 表中的 FK_roomTypesID、FK_BedTypeID 和 FK_roomViewsID?所有 FK 都位于与主数据库不同的表上。

MySqlDataAdapter da = new MySqlDataAdapter("SELECT RoomNo, RoomBedsNo, 
    RoomSmoking, RoomMiniBar,RoomKitchen,RoomFirePlace,RoomBalcony, RoomVeranda,
    RoomGarden, RoomEntrance, RoomAirCondition, RoomTV, FK_roomTypesID, 
    FK_BedTypeID, FK_roomViewsID FROM tblrooms WHERE roomsID NOT IN(SELECT FK_roomsID
    FROM tblbooking WHERE '" + arrdate + "' < checkOutDate AND '" + depdate + "' > 
    checkInDate)", conn);

【问题讨论】:

  • 你能告诉我们你的数据库模型吗?
  • 不,我们无法告诉您,因为我们无法读懂您的想法或查看您数据库中的表格。

标签: c# mysql visual-studio-2010


【解决方案1】:

您的查询中有以下部分:

FROM tblrooms

您在FROM 子句中定义了您的joins,因此您应该将上面的代码修改为:

FROM tblrooms
join tblroomtypes
on tblrooms.FK_roomTypesID = tblroomtypes.roomTypesID
join tblbedtypes
on tblrooms.FK_bedTypesID = tblbedtypes.bedTypesID
join tblroomviews
on tblrooms.FK_roomViewsID = tblroomviews.roomViewsID

请注意,您没有提供太多信息,所以我在这里猜测您的 tablecolumn 名称。另外请注意,我没有选择任何新的columns。最后,请注意,如果问题适用于您的案例,您需要通过将columns 引用为table 的列来解决歧义。并格式化您的代码,很难阅读。我没有为joins 使用inner 关键字,因为join 默认为inner

【讨论】:

  • 做得很好...有时发帖的人模棱两可,我们必须对他们拥有/需要什么做出有根据的准确猜测。他们也将学会调整他们未来的问题以涵盖更多细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
相关资源
最近更新 更多