。我有 五个表 一个是 商品表 订单表 订单详细表 地址表 客户表 当我查询 订单信息的时候 这几个表中都有相互关联的字段。然后取出来 所有的信息。我该怎么写 条件 成了关键问题。
多组合的

解决方案 »

  1.   

    ???
    a.col1=b.col2 and c.col3=0 or (d.col1=c.col8 or e.col16=88888)
      

  2.   

    不要写重复就可以,

    Table1  :A11 字段
    Table2  :A21 字段
    Table3  :A31 字段
    Table4  :A41 字段
    Table5  :A51 字段
    互相相等, 则where Table1.A11=table2.A21
    and Table2.A21=table3.A31
    and table3.A31=table4.A41
    and table4.A41=table5.A51
      

  3.   

    SQL执行时是先根据模糊的查询(比如 like  between等)确定范围,再用精确查找匹配。,你要先查订单信息表,然后根据订单信息表的外键查其他几个表
      

  4.   

      public DataSet GetTheOrderInfo(string strWhere)
            {
                StringBuilder strSql = new StringBuilder();
                //现在的OrderDetail.GoodsId = Goods.Id
                //查询的订单表字段
                strSql.Append("SELECT [Order].OrderId, [Order].CustomerId, [Order].BuyerPayable, [Order].BuyerPostage,[Order].Sum, [Order].OrderState, [Order].OrderCreateTime, [Order].OrderPayTime,[Order].TransportId, [Order].OrderRe, [Order].SignId, [Order].PayCode,[Order].PayType, [Order].BuyerMessage,");
                //查询的客户表的字段
                strSql.Append("Customer.webName, Customer.NickName,Customer.City,Customer.Mail,");
                //查询的客户地址的字段
                strSql.Append("Address.PostCode, Address.ReceiverAddress, Address.ActivityAddress.ReceiverPhone,Address.ReceiverName,");
                //查询的订单详细表的字段
                strSql.Append("OrderDetail.GoodsId, OrderDetail.Num, OrderDetail.Price,OrderDetail.Discount,");
                //查询的商品表的字段
                strSql.Append("Goods.GoodsName, Goods.ProduceId");
                //表之间的对应关系
                strSql.Append("FROM [Order] INNER JOIN  Customer ON [Order].CustomerId = Customer.CustomerId INNER JOIN Address ON [Order].AddressId = Address.Id INNER JOIN OrderDetail ON [Order].OrderId = OrderDetail.OrderId INNER JOIN Goods ON OrderDetail.GoodsId = Goods.Id");         
                //传进来的查询条件
                if (strWhere != "")
                {
                    strSql.Append(" where " +strWhere);
                }            return DbHelperSQL.Query(strSql.ToString());
            }
    这是我的查询的函数
    然后 -在有一个函数调用并 给他 where 条件 但是 where 条件是 不固定的  有可能是上面 表的 某个字段 或是多个字段的 组合 。所以我的 调用他的函数怎么写。where 条件怎么写 
      

  5.   

    你最好这样写: strSql.Append("FROM [Order] INNER JOIN  Customer ON [Order].CustomerId = Customer.CustomerId INNER JOIN Address ON [Order].AddressId = Address.Id INNER JOIN OrderDetail ON [Order].OrderId = OrderDetail.OrderId INNER JOIN Goods ON OrderDetail.GoodsId = Goods.Id");  
    后面
     strSql.Append("where 1=1  ")
    传递where 条件的时候
    stringBuilder build = new stringBuilder();
     
    build.Append(" And Order.CustomerId=1");
    build.Append(" And OrderDetail.OrderId =2");
    strWhere = build.ToString();
    然后传递 strWhere
      

  6.   

    根据条件判断来拼接字符串呗,用StringBuilder,效率高
      

  7.   

    用in 或者exist子句先取得结果,再进行一张表的记录的筛选,即查询优化课题,