使用多个查询从不同的表中获取数据

时间:2015-07-25 08:09:12

标签: java mysql database

我是DATABASE和MYSQL的新手,因此在处理查询方面没有太多经验或知识

我在MYSQL数据库中有两个表studentslogin它们都有1:1的关系,学生的主键是登录中的外键

因此登录表同时包含Student_ID(FK)和Password

我想在JAVA程序中运行一个查询,该程序将检查用户在id表中输入的passwordlogin,然后返回匹配的student对象来自学生表的数据

到目前为止,这是我为登录用户usernamepassword

所做的工作
public Student validate_Student(String s, String t)
    {
        int w = Integer.parseInt(s);
        int q = 0;

    String iD = "";

    Student obj = new Student();
    String query = "SELECT * FROM login WHERE Student_ID = " + w + " and Password= " + t;

    try
    {
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            iD = rs.getString("Student_ID"); //matching record

        }

        int i = Integer.parseInt(iD); // check the previously searched matching record in student table 
        String query1 = "SELECT * FROM student WHERE ID = " + i;

        ResultSet rs1 = stmt.executeQuery(query);
        while (rs1.next()) {
            obj.setID(rs1.getString("ID"));
            obj.setName(rs1.getString("NAME"));
            obj.setAddress(rs1.getString("ADDRESS"));
            obj.setPhone(rs1.getString("PHONE_NO"));
            obj.setEmail(rs1.getString("EMAIL"));
            obj.setDOB(rs1.getString("DOB"));
            obj.setDegree(rs1.getString("DEGREE"));

        }

    }
    catch(SQLException e)
    {
        System.out.println("Problem in Query");
        e.printStackTrace();
    }

    return obj;
}

我不太确定如何在查询中使用UNIONS

1 个答案:

答案 0 :(得分:0)

以下查询将返回登录凭据匹配的学生详细信息。

SELECT s.* FROM student s JOIN login l on s.id = l.Student_ID WHERE l.Student_ID = " + w + " and l.Password= '" + t + "'";
  • 使用一对一关系s.id = l.Student_ID将学生表加入登录表,其中s是学生表的别名,l是登录表。

  • 仅返回学生详细信息,请在select语句中使用s.*