请教一下联合查询.

jeanyli 2004-01-14 12:10:31
我现在有7张表,其中都有相同的字段,那么如果我要一次过查这7张表的这字段,怎样写SQL语句啊?我用的是3.25版的MYSQL.
...全文
81 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
nhconch 2004-01-15
  • 打赏
  • 举报
回复
to mikespook(Mike大懒猫)
恐怕你连什么时候用union什么时间用join都不知道。
sai1691 2004-01-14
  • 打赏
  • 举报
回复
select *
from tb1,tb2,tb3,tb4,tb5,tb6,tb7
where tb1.aa=tb2.aa=tb3.aa=......
pwtitle 2004-01-14
  • 打赏
  • 举报
回复
select * from tb1 left join tb2 on tb1.f1=tb2.f1
left join tb3 on tb1.f1=tb3.f1
.......
order by ......

注意同一字段名要用table.field区分。
在select的时候遇到同一字段名要用 as 别名
mikespook 2004-01-14
  • 打赏
  • 举报
回复
3.25?
3.25能使用联合查询么?
mikespook 2004-01-14
  • 打赏
  • 举报
回复
to nhconch(天蝎蝴蝶)

你所使用的UNION实际上准确的说是“集合查询”,对吧?
而我说的实际上是“连接查询”,对吧?

但是楼主的目的不论用“集合查询”还是“连接查询”都可以达到,对吧?

而MYSQL彻底不支持“集合查询”,对吧?虽然3.X不支持连接查询,但是4.X支持连接查询,对吧?

所以用“连接查询”能达到目的,对吧?

呵呵~~~~~~
nhconch 2004-01-14
  • 打赏
  • 举报
回复
靠,人家问的是联合不是join。
mysql 3.25好像还不支持联合查询。

mssql是这样的,你参考一下:
select top 10 * from
select ID,Title,'佛山新闻' as Type,'fsnews' as Target from News "
union all select ID,Title,'政策法规' as Type,'policies' as Target from Policies
union all select ID,Title,'办事流程' as Type,'flow' as Target from Flow
union all select ID,Title,'科技信息' as Type,'techinfo' as Target from TechlogInfo
) A order by ReleaseDate DESC
mikespook 2004-01-14
  • 打赏
  • 举报
回复
读出来信息?

联合查询你不可能分别读取表结构不同的记录~~`要么结构一样,和读一张表一样读~~
要么就用AS,分别给不同的字段虚名
jeanyli 2004-01-14
  • 打赏
  • 举报
回复
$str="select m_jzds.bz,m_ktv.bz as bz1,m_shtt.bz as bz2 ,m_xzl.bz as z3,m_zfjg.bz as bz4,m_zhuzai.bz as bz5 ,m_jzds.ssdt from m_jzds,m_ktv,m_shtt,m_xzl,m_zfjg,m_zhuzai
where m_jzds.bz like '%$ymd%'or m_ktv.bz like '%$ymd%' or m_shtt.bz like '%$ymd%' or m_xzl.bz like '%$ymd%' or m_zfjg.bz like '%$ymd%' or m_zhuzai.bz like '%$ymd%' or jzds.ssdt like '%$ymd%' ";

执行显示错误:

Warning: Supplied argument is not a valid MySQL result resource in /home/summer/crm/upawake.php on line 41
jeanyli 2004-01-14
  • 打赏
  • 举报
回复
好像不对啊Mike大懒猫:
但是怎样读出信息来啊,因为每条信息都不一样的只是都含有1999年8月10日 而已我应该怎样显示那些记录啊?
jeanyli 2004-01-14
  • 打赏
  • 举报
回复
放心,能解决问题我肯定会给分的.
mikespook 2004-01-14
  • 打赏
  • 举报
回复
SELECT bz,nr FROM t1,t2,t3,t4,t5,t6,t7 WHERE t1.bz LIKE "%1999年8月10日%" OR t2.bz LIKE "%1999年8月10日%" OR t3.bz LIKE "%1999年8月10日%" OR t4.bz LIKE "%1999年8月10日%" OR t5.bz LIKE "%1999年8月10日%" OR t6.bz LIKE "%1999年8月10日%" OR t7.bz LIKE "%1999年8月10日%"
jeanyli 2004-01-14
  • 打赏
  • 举报
回复
如果我还有一个字段nr(内容),也要在某一个表里找出来呢,也就是多加一个字段,怎样做呢?
mikespook 2004-01-14
  • 打赏
  • 举报
回复
PS:你的信誉咋那么低啊?
mikespook 2004-01-14
  • 打赏
  • 举报
回复
3.25我还真不记得能不能使用联合查询了~~
不过你的要求在4.X上实现是这样的~~~

SELECT bz FROM t1,t2,t3,t4,t5,t6,t7 WHERE t1.bz LIKE "%1999年8月10日%" OR t2.bz LIKE "%1999年8月10日%" OR t3.bz LIKE "%1999年8月10日%" OR t4.bz LIKE "%1999年8月10日%" OR t5.bz LIKE "%1999年8月10日%" OR t6.bz LIKE "%1999年8月10日%" OR t7.bz LIKE "%1999年8月10日%"
jeanyli 2004-01-14
  • 打赏
  • 举报
回复
是这样的,我有七张表每一张表里都有一个字段是bz(备注),备注里的内容可能是带有时间的.例如"1999年8月10日,在那里发生......."如果我把所有表带有时间1999年8月10日的备注信息都找出来,怎样做呢?
jeanyli 2004-01-14
  • 打赏
  • 举报
回复
如果我只想找匹配的内容呢?并不是完全等于
用like和%是怎样表达的呢?谢谢

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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