1

次の表に基づいて結果を見つける必要があります

生徒 StudentPapersSelection as sps StudentGroupManagegemt as sgm Internal Data as iars

Student から、学生の rollno と name が必要です。ここで、iars の paperid = sps の paperid および iars groupid= sgm グループ ID と学生 ID は、前の 2 つに基づく必要があります。

私が実行しているクエリは次のとおりです。

select students.rollno, students.name 
from students,sps,iars,sgm 
where iars.id=1
and students.studentid=(select studentid 
                        from sps where sps.paperid=iars.paperid
                        and iars.id=1)
and students.studentid=(select studentid 
                        from sgm 
                        where sgm.groupid=iars.groupid 
                        and iars.id=1) 
and students.course=iars.courseid  
and students.semester=iars.semester

クエリが複数の行を返すと言います。私はこの問題が嫌いです。

4

2 に答える 2

0

あなたのコメントと質問の限られた情報から判断すると、代わりにやりたいことのようです

...students.studentid=(select studentid ...

両方のオカレンスを

...students.studentid in(select studentid ...

したがって、クエリは次のようになります。

select students.rollno, students.name from students,sps,iars,sgm where iars.id=1
    and students.studentid in (select studentid from sps 
        where sps.paperid=iars.paperid and iars.id=1) 
    and students.studentid in (select studentid from sgm
        where sgm.groupid=iars.groupid and iars.id=1) 
    and students.course=iars.courseid 
    and students.semester=iars.semester
于 2012-07-22T19:44:48.920 に答える
0

私は推測してみます:

select  students.rollno,
        students.name
from    iars, students join sps on students.studentid = sps.studentid
        join sgm on students.studentid = sgm.studentid
where   iars.id = 1 
and     sps.paperid=iars.paperid
and     sgm.groupid=iars.groupid
and     students.course = iars.courseid
and     students.semester = iars.semester

次のようなテーブルを想定します。

CREATE TABLE `students` (
  `studentid` int(11) NOT NULL AUTO_INCREMENT,
  `rollno` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `course` int(11) DEFAULT NULL,
  `semester` int(11) DEFAULT NULL,
  PRIMARY KEY (`studentid`)
) ENGINE=InnoDB AUTO_INCREMENT=66820 DEFAULT CHARSET=latin1


CREATE TABLE `sps` (
  `studentid` int(11) NOT NULL AUTO_INCREMENT,
  `paperid` int(11) DEFAULT NULL,
  PRIMARY KEY (`studentid`)
) ENGINE=InnoDB AUTO_INCREMENT=66820 DEFAULT CHARSET=latin1


CREATE TABLE `sgm` (
  `studentid` int(11) NOT NULL AUTO_INCREMENT,
  `groupid` int(11) DEFAULT NULL,
  PRIMARY KEY (`studentid`)
) ENGINE=InnoDB AUTO_INCREMENT=66820 DEFAULT CHARSET=latin1


CREATE TABLE `iars` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `paperid` int(11) DEFAULT NULL,
  `groupid` int(11) DEFAULT NULL,
  `courseid` int(11) DEFAULT NULL,
  `semester` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=66820 DEFAULT CHARSET=latin1

そして、このようなデータ:

insert into students values (1,1,'a',1,1);
insert into students values (2,1,'b',1,1);
insert into iars values(1,1,1,1,1);
insert into sgm values (1,1);
insert into sps values (1,1);
于 2012-07-22T20:18:18.553 に答える