上次发帖是我没说清楚!数据库里有 uid (身份证号) xmname (项目名称) 两个字段  
库内容如下:uid xmname1 xxx
1 YYY
1 ZZZ
2 AAA
2 BBB
3 CCC
4 DDD我想查询 相同 uid 的 xmname 同时有xxx 和yyy 的人有哪些,,怎么查啊,, 记录出来必须唯一!!!程序是asp.net  前台界面是 四个文本框 文本框之间是 单选按钮 与 或(可以自己选择) 四个文本框可以都添,也可以只添一个 txt1.text  txt2.text txt3.text txt4.text  数据库如上, 当进行 xmname 查询的时候   选择 与   或者  或    ,, 怎样查询, (注,相同的ID出来一条记录即可)谢谢大家,如果我哪里没说清楚,我可以补充!

解决方案 »

  1.   

    uid xmname1 xxx
    1 YYY
    1 ZZZ
    2 AAA
    2 BBB
    3 CCC
    4 DDD
    这个出来的结果 你要什么。。
      

  2.   

    使用动态sql吧,选择与的时候传递and关键字,选择或的时候传递or关键字,最后构造成sql语句再执行。
      

  3.   

     这个是我的查询代码!!! 写错了。。和我想要的结果不一样! protected void Button1_Click(object sender, EventArgs e)
            {
                int i = 0;
              //  string sql = "select DISTINCT * from xmsy13 where ";         //   string sql = "select distinct uid from xmsy13 k   where exists(select * from xmsy13 where k.uid=uid and xmname='XXX')and exists(select * from xmsy13 where k.uid=uid and xmname='YYY')";
              //  string sql = "select username,uid  from xmsy13 t where xname='xxx' or xname='yyy' having count(*)>2";            string sql = "select distinct id,username, uid from xmsy13 k  where ";         
                
                if (xm1.Text != "无")
                {
                    sql = sql + "exists(select * from xmsy13 where k.uid=uid and xmname='"+xm1.Text+"')";
                    i = 1;
                }            if (xm2.Text != "无")
                {
                    if (and1.Checked)
                    {
                        sql = sql + " and ";
                    }
                    else
                    {
                        sql = sql + " or ";
                    }
                    sql = sql + "exists(select * from xmsy13 where k.uid=uid and xmname='" + xm2.Text + "')";
                    i = 2;
                }
                if (xm3.Text != "无")
                {
                    if (and2.Checked)
                    {
                        sql = sql + " and ";
                    }
                    else
                    {
                        sql = sql + " or ";
                    }
                    sql = sql + "exists(select * from xmsy13 where k.uid=uid and xmname='" + xm3.Text + "')";
                    i = 3;
                }
                if (xm4.Text != "无")
                {
                    if (and3.Checked)
                    {
                        sql = sql + " and ";
                    }
                    else
                    {
                        sql = sql + " or ";
                    }
                    sql = sql + "exists(select * from xmsy13 where k.uid=uid and xmname='" + xm4.Text + "')";
                    i = 4;
                }            if (xm5.Text != "无")
                {
                    if (and4.Checked)
                    {
                        sql = sql + " and ";
                    }
                    else
                    {
                        sql = sql + " or ";
                    }
                    sql = sql + "exists(select * from xmsy13 where k.uid=uid and xmname='" + xm5.Text + "')";
                    i = 5;
                }            if (xm6.Text != "无")
                {
                    if (and5.Checked)
                    {
                        sql = sql + " and ";
                    }
                    else
                    {
                        sql = sql + " or ";
                    }
                    sql = sql + "exists(select * from xmsy13 where k.uid=uid and xmname='" + xm6.Text + "')";
                    i = 6;
                }        //    sql = sql + " and (userinfo1.uid=xmsy13.uid)";
                if (i > 0)
                {
                    SqlDataSource1.SelectCommand = sql;
                    GridView1.DataBind();
                    mysql.Text = sql;
                    //    string  
                    //  string sqldy=
                    bl.Text = "查询数据占总数据的:";
                    mydagl.BLL.userinfo1 ubll = new mydagl.BLL.userinfo1();
                    DataSet ds = ubll.GetAllList();
                    int zs = ds.Tables["ds"].Rows.Count;
                    Double mybl = Math.Round(Convert.ToDouble(gridviewnum.Text) / Convert.ToDouble(zs), 2);
                    bl.Text = bl.Text + Convert.ToString(mybl * 100) + "%";
                    show.Visible = true;
                              }
                else
                {                SqlDataSource1.SelectCommand = "";            }
                //  show.Text = "符合本次查询记录个数为:" + Convert.ToString(GridView1.Rows.Count)+"     ";
            }
      

  4.   

    那里有and可以理解,但是有or怎么算