sql
  • jdbc
  • resultset
  • 2013-10-18 69 views 0 likes 
    0

    我有5个表,每个表中的模式是(com_no,uid,date)。我想访问所有的表并获取相同的uid的com_no。我在写JDBC此查询作为访问结果集中的多个表

    String s1= (String)session.getAttribute("uid"); 
    rs1=stat.executeQuery("select distinct com_no from hostel,sports where uid='"+s1+"'"); 
    while(rs1.next()) { 
    out.println(rs1.getString("com_no")); 
    } 
    

    但servlet异常是:

    The specified field 'com_no' could refer to more than one table listed in the FROM clause of your SQL statement. 
    

    任何人可以帮助我imrove此查询或者给我一些其他的方式来做到这一点。任何帮助将不胜感激。

    +0

    这不是一个servlet异常,它是SQL异常。 SQL本身是不正确的。查询数据库时,必须正确指定列。如果com_no仅在其中一个表中可用,那么它很好,否则会出错。在没有任何连接条件的情况下,在选择查询中指定两个表需要什么? –

    +0

    @AhhijithNagarajan我想打印所有在同一个uid多个表中的com_no。所以我试图使用这个查询。你能以其他方式建议吗? – Ani

    +1

    你正在使用哪个数据库?几乎所有的数据库,你都可以使用联合, 从table1中选择com_no,其中uid =? union 从table2中选择com_no,其中uid =? –

    回答

    0

    请注明什么是你需要通过检索数据,但你可以尝试下面的代码,避免你现在得到了错误,

    rs1=stat.executeQuery("select distinct hostel.com_no as hostelcom, sports.com_no as sportscom from hostel join sports on hostel.uid=sports.uid where hostel.uid='"+s1+"'"); 
    
        while(rs1.next()) { 
        out.println(rs1.getString("hostelcom")); 
        } 
    

    你必须看看SQL连接查询。

    0

    使用UNIONJOIN带别名,以避免在SELECT查询中不明显的字段。

    首先,我想知道为什么你有5个表完全相同的计划的原因?

    +0

    我有5个类别,都需要相同的属性。 – Ani

    +0

    在这种情况下,请使用'JOIN'。什么字段是你的表中的主键和外键? – kapand

    相关问题