C#中 join使用

25 篇文章 1 订阅

winform的join语句使用

     public DataTable GetPostStationByLine(string line)
        {  
            string sql = string.Format("SELECT A.STATION_TYPE,B.STATION_TYPE_DESC FROM IMES.M_POST_LINE_STATION A left join IMES.M_STATION_TYPE B " +
                "ON B.STATION_TYPE = A.STATION_TYPE  WHERE A.ENABLED = 'Y' AND A.LINE ='{0}'", line);
            return utility.Query(sql);
        }
        //取两个表值的另一种写法
     public ExecuteResult ShowValues(bool Filter,string sFieldName,string sFieldText,int Enable)
        {
            try
            {
                exeRes = new ExecuteResult();
                //string sqlStr = @" select  a.*  from imes.m_line a  where  1=1 ";
                string sqlStr = @" select  a.*,b.SHOP  from imes.m_line a  left join imes.m_shop b on b.ID=a.SHOP_ID  where  1=1 ";

                if (Filter)
                {
                    sqlStr = sqlStr + " and " + sFieldName + " like '%"+ sFieldText + "%'";
                }

                if (Enable == 0)
                {
                    sqlStr = sqlStr + " and a.enabled = 'Y' ";
                }
                else if (Enable == 1)
                {
                    sqlStr = sqlStr + " and a.enabled = 'N' ";
                }
                sqlStr = sqlStr + " order by  a.update_time desc ";
                object[] para ;

                if (Filter)
                {
                    exeRes.Anything = utility.Query(sqlStr);
                }
                else
                {
                    exeRes.Anything = utility.Query(sqlStr);

                }

                exeRes.Status = true;
            }
            catch (Exception ex)
            {
                exeRes.Message = "Error:" + ex.Message;
                exeRes.Status = false;
            }
            return exeRes;
        }

C#MVC中的使用

var getList =(from x in db.EMS_R_CALL.Where(x=>x.PLANT_ID==plantId && x.STATUS==1 && GrpType.Contains(x.DEFECT_TYPE))
                          join d in db.EMS_R_CALL_DEFECT.Where(y=>y.BEGIN_REPAIR_NO==null) on x.CALL_REPAIR_NO equals d.CALL_REPAIR_NO into dd
                          from T_D in dd.DefaultIfEmpty()
                          join p in db.EMS_SYS_PARAM_VALUE.Where(y=>y.DELETEFLAG ==0 && y.PARAM_NAME == "DEFECT_TYPE") on x.DEFECT_TYPE equals p.PARAM_VALUE into pp
                          from T_P in pp.DefaultIfEmpty()
                          select new CallRepair
                          {
                              Id = (int)x.ID,
                              Call_Repair_No = x.CALL_REPAIR_NO,
                              Repair_Type = x.REPAIR_TYPE,
                              Call_Location = x.LINE.LINE1,
                              Line_Id = x.LINE_ID,
                              Line_Name = x.LINE.CODE,
                              Call_ByN = db.ACCOUNT.Where(t => t.ID == x.CALL_BY).Select(t => t.NAME).FirstOrDefault(),
                              Call_Time = x.CALL_TIME,
                              MachineId =T_D.MACHINE_ID,
                              MESCode = T_D.MACHINE.ITEM_NO,
                              MachineNo = T_D.MACHINE.CUSTODYNO,
                              Machine_Name=T_D.MACHINE.DEVICENAME,
                              Defect_Type_Name = T_D.TROUBLES.NAME,
                              Defect_Desc_Plus = T_D.DEFECT_DESC_PLUS,
                              Defect_Type = T_P.PARAM_DESC,
                              DefaultGrpId = DefaultGroupId,
                          }).OrderByDescending(x => x.Call_Time).ToList();
            return getList;

#SQL语句
这是比较熟悉的3张表的连接
SELECT *
FROM test.contract a
JOIN test.customer b ON a.Num = b.Num2
JOIN test.customer3 c ON a.num = c.num3;

连接不一定join后面都是和第一张表的连接。
SELECT *
FROM test.contract a
JOIN test.customer b ON a.Num = b.Num2
LEFT JOIN test.customer4 d ON b.num2 = d.num4;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值