| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 836 人关注过本帖
标题:复杂的SQL查询
收藏  订阅  推荐  打印 
taoxinhui
Rank: 2
等级:注册会员
帖子:70
积分:852
注册:2007-8-7
复杂的SQL查询

我现在有5个表
表1
sell_id  item_id
we0001   lw00001
we0002   lw00002
we0003   lw00003
表2
item_id  item_de_id
lw00001   ls00001
lw00002   hz00001
lw00003   dl00001
表3
ls_id    email
ls00001  gu@tom.com
表3
hz_id    email
hz00001   zp@tom.com
表4
dl_id    email
dl00001   zw@tom.com
我现在要通过搜索email得到表1的ID,请问怎么写这个SQL语句.麻烦了各位.我想了很久.麻烦各位了
搜索更多相关主题的帖子: SQL  item  email  搜索  查询  
2008-1-14 19:20
purana
Rank: 12Rank: 12Rank: 12
来自:广东-广州
等级:版主
威望:66
帖子:6040
积分:61390
注册:2005-6-17

将后面三个表用Union All合并.
然后再通过id与表1进行连接即可.

我的msn: myfend@hotmail.com
2008-1-14 20:27
taoxinhui
Rank: 2
等级:注册会员
帖子:70
积分:852
注册:2007-8-7
回复 2# 的帖子

关键是不会写啊,单个的还能写出来.麻烦写出来一下可以吗?
2008-1-14 21:57
taoxinhui
Rank: 2
等级:注册会员
帖子:70
积分:852
注册:2007-8-7
回复 2# 的帖子

select * from lw_item_account
where item_id in (
select item_id from lw_deputy_info,lw_item where lw_item.item_deputy_id=lw_deputy_info.deputy_id and deputy_email like '%"&search_supply&"%' order by deputy_id desc
union
select item_id from lw_teacher_info,lw_item where lw_item.item_deputy_id=lw_teacher_info.teacher_id and item_teacher_email like '%"&search_supply&"%' order by teacher_id desc
  union
select item_id from lw_member_info,lw_item where lw_item.item_deputy_id =lw_member_info.member_id and member_email like '%"&search_supply&"%' order by member_id desc)
这样写对不对?
2008-1-14 22:34
provoke
Rank: 12Rank: 12Rank: 12
等级:版主
威望:4
帖子:159
积分:1910
注册:2007-6-14


如果要求Email是在表3、表4、表5中任意一个表中存在的,来搜索表1中的sell_id:

select 表1.sell_id
from 表1,表2
where 表1.item_id=表2.item_id and 表2.item_de_id in (
select distinct ls_id from 表3
union
select distinct hz_id from 表4
union
select distinct dl_id from 表5
)
前提是:表3表4和表5的这三个字段的定义是一样的。

另外,你的表结构是不是给错了,有2个表3却没有表5,应该是这样的吧:
表3
ls_id    email
ls00001  gu@tom.com
表4
hz_id    email
hz00001   zp@tom.com
表5
dl_id    email
dl00001   zw@tom.com

我写的SQL语句当成是这样的表结构的。


其实表3表4表5的数据没有必要分开在3个表里存储,只需一个表就OK了,添加多一个字段来区分类别:

表345
item_de_id    email    item_de_id_type
ls00001   gu@tom.com    ls_id
hz00001   zp@tom.com    hz_id
dl00001   zw@tom.com    dl_id

[[italic] 本帖最后由 provoke 于 2008-1-20 15:13 编辑 [/italic]]

爱我至爱,至死不渝!
2008-1-20 15:08
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048060 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved