关于三张表查询的问题,很简单,请指教!

spliky 2006-05-15 02:03:25
大家好:

有个问题想请教大家,是关于联合三张表查询的问题

我有三张表,如下;
CREATE TABLE `ktinfo` (
`KtNum` int(10) NOT NULL auto_increment,
`KtName` varchar(100) default NULL,
`KtSort` int(10) default NULL,
`TNum` int(10) default NULL,
`KtIntro` text,
PRIMARY KEY (`KtNum`),
KEY `TNum` (`TNum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `stuinfo` (
`StuNum` int(10) NOT NULL default '0',
`StuName` varchar(50) default NULL,
`StuEmail` varchar(50) default NULL,
`StuTel` varchar(50) default NULL,
`KetiId` int(10) default NULL,
`StuInfo` longtext,
`KaitiIf` tinyint(1) unsigned NOT NULL default '0',
`BiyeIf` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`StuNum`),
KEY `KetiId` (`KetiId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `teacherinfo` (
`TNum` int(10) NOT NULL default '0',
`TName` varchar(10) default NULL,
`TTel` varchar(12) default NULL,
`TEmail` varchar(50) default NULL,
`TZc` int(10) default NULL,
`TGroup` int(10) default NULL,
PRIMARY KEY (`TNum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在我想在ktinfo表中查出KetiId字段在stuinfo表中没有的记录,且ketinfo表中TNum为一查询量

目的实际就是要查出没有被别的学生所选择的这个导师的所有课题

最好能够使用sql语句来完成,我写的如下:
String sql = "select * from KtInfo (select * from KtInfo where KtNum not in(select KetiId from StuInfo)) where TNum = "+TNum+"";
但是错误的。

同时我也希望能够把
select * from KtInfo where KtNum not in(select KetiId from StuInfo)
这个结果存在array中,但是不知道怎么进行下一步筛选了。



这个小问题还劳烦大家帮帮忙了!十分感谢
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
spliky 2006-05-17
  • 打赏
  • 举报
回复
XqYuan:

再次感谢你对我提供的帮助,谢谢!
我的基础太不扎实了,呵呵
spliky 2006-05-15
  • 打赏
  • 举报
回复
XqYuan:
这位朋友,如果我没有记错,我想你都帮助我解决了两个问题了,谢谢你!

这个语句我大体上知道,也许是经验不足,没有写出来,呵呵。按照这个语句我在MySQL command Line中查询的时候却出现如下错误:
ERROR 1066 (42000): Not unique table/alias: 'KtInfo'

数据库中肯定有符合要求数据,并且当前数据库正确。
XqYuan 2006-05-15
  • 打赏
  • 举报
回复
select KtInfo.* from KtInfo left join KtInfo on KtNum=KetiId where KetiId is null and TNum = tnum
XqYuan 2006-05-15
  • 打赏
  • 举报
回复
select KtInfo.* from KtInfo left join StuInfo on KtNum=KetiId where KetiId is null and TNum = tnum

glay_51 2006-05-15
  • 打赏
  • 举报
回复
要用到join 语句
把三个表通过join连在一起查
join 还分为left join
right join
natural join
具体的还是看帮助

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧