怎样同时查询多个数据表

史上最难读懂的一个人 2014-01-23 11:04:44
有3个表(jtrb1,jtrb2,jtrb3),每个表都有几十万行记录,且每个表字段名称都一样(id,name,price,intime,outtime
怎样同时查询3个表里的内容?
比如我要在3个表里同时查字段name为“上衣”价格price小于“300”的记录。
求贴个PHP代码,单个表查询会做,多个表的就搞不动了。
另外:多表查询能不能用
while($row = mysql_fetch_array($result))

来输出内容?
最主要的还是贴个代码啊。谢谢啦!!
...全文
731 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2014-01-23
  • 打赏
  • 举报
回复
单个

$result1 = mysql_query("select * from jtrb1 where name='上衣' and price < 300");
$row1 = mysql_fetch_array($result1);

$result2 = mysql_query("select * from jtrb2 where name='上衣' and price < 300");
$row2 = mysql_fetch_array($result1);

$result3 = mysql_query("select * from jtrb3 where name='上衣' and price < 300");
$row3 = mysql_fetch_array($result3);
组合

select * from jtrb1,jtrb2,jtrb3 
where jtrb1.name='上衣' and jtrb1.price < 300
and   jtrb2.name='上衣' and jtrb2.price < 300
and   jtrb3.name='上衣' and jtrb3.price < 300
  • 打赏
  • 举报
回复
引用 4 楼 lumengabc 的回复:
UNION试试
试来试去,还是这个最有效
  • 打赏
  • 举报
回复
找到问题所在了,,原来没有修正编码,导致输出总是空白
mysql_query("set character set 'utf8'");//读库
mysql_query("set names 'utf8'");//写库
  • 打赏
  • 举报
回复
引用 3 楼 u011986449 的回复:
[quote=引用 2 楼 suogayz 的回复:] [quote=引用 1 楼 zy205817 的回复:] 单个

$result1 = mysql_query("select * from jtrb1 where name='上衣' and price < 300");
$row1 = mysql_fetch_array($result1);

$result2 = mysql_query("select * from jtrb2 where name='上衣' and price < 300");
$row2 = mysql_fetch_array($result1);

$result3 = mysql_query("select * from jtrb3 where name='上衣' and price < 300");
$row3 = mysql_fetch_array($result3);
组合

select * from jtrb1,jtrb2,jtrb3 
where jtrb1.name='上衣' and jtrb1.price < 300
and   jtrb2.name='上衣' and jtrb2.price < 300
and   jtrb3.name='上衣' and jtrb3.price < 300
组合这里,在数据库里查询,3个数据库里都有一条相同的记录,但它只列出一条,我想把三条都列出来,这里要怎么写? 还有
<?php 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("test", $con);
$query="SELECT * FROM jtrb1,jtrb2,jtrb3 WHERE jtrb1.name='上衣' and jtrb2.name='上衣' and jtrb3.name='上衣'";
$result= mysql_query($query,$con)or die(mysql_error());
$row= mysql_fetch_array($result);
while($row)
  {
	  echo $row['jtrb1.Name']."<br>";
	  //下面省略
  }
  mysql_close();
?>
我这样子写输出空白。请大神指点。[/quote] 把数组打印出来。。用foreach试一试。[/quote] foreach 也是空白。SQL在phpmyadmin里可以输出内容,求解!
xuhc2008 2014-01-23
  • 打赏
  • 举报
回复
引用 5 楼 zy205817 的回复:
select * from (
select * from jtrb1 where jtrb1.name='上衣' and jtrb1.price < 300 
union all
select * from jtrb2 where jtrb2.name='上衣' and jtrb2.price < 300 
union all 
select * from jtrb3 where jtrb3.name='上衣' and jtrb3.price < 300
) as t
union all 是最能满足你需求而且一条sql搞定的
码无边 2014-01-23
  • 打赏
  • 举报
回复
select * from (
select * from jtrb1 where jtrb1.name='上衣' and jtrb1.price < 300 
union all
select * from jtrb2 where jtrb2.name='上衣' and jtrb2.price < 300 
union all 
select * from jtrb3 where jtrb3.name='上衣' and jtrb3.price < 300
) as t
lumengabc 2014-01-23
  • 打赏
  • 举报
回复
UNION试试
风火程序员 2014-01-23
  • 打赏
  • 举报
回复
引用 2 楼 suogayz 的回复:
[quote=引用 1 楼 zy205817 的回复:] 单个

$result1 = mysql_query("select * from jtrb1 where name='上衣' and price < 300");
$row1 = mysql_fetch_array($result1);

$result2 = mysql_query("select * from jtrb2 where name='上衣' and price < 300");
$row2 = mysql_fetch_array($result1);

$result3 = mysql_query("select * from jtrb3 where name='上衣' and price < 300");
$row3 = mysql_fetch_array($result3);
组合

select * from jtrb1,jtrb2,jtrb3 
where jtrb1.name='上衣' and jtrb1.price < 300
and   jtrb2.name='上衣' and jtrb2.price < 300
and   jtrb3.name='上衣' and jtrb3.price < 300
组合这里,在数据库里查询,3个数据库里都有一条相同的记录,但它只列出一条,我想把三条都列出来,这里要怎么写? 还有
<?php 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("test", $con);
$query="SELECT * FROM jtrb1,jtrb2,jtrb3 WHERE jtrb1.name='上衣' and jtrb2.name='上衣' and jtrb3.name='上衣'";
$result= mysql_query($query,$con)or die(mysql_error());
$row= mysql_fetch_array($result);
while($row)
  {
	  echo $row['jtrb1.Name']."<br>";
	  //下面省略
  }
  mysql_close();
?>
我这样子写输出空白。请大神指点。[/quote] 把数组打印出来。。用foreach试一试。
  • 打赏
  • 举报
回复
引用 1 楼 zy205817 的回复:
单个

$result1 = mysql_query("select * from jtrb1 where name='上衣' and price < 300");
$row1 = mysql_fetch_array($result1);

$result2 = mysql_query("select * from jtrb2 where name='上衣' and price < 300");
$row2 = mysql_fetch_array($result1);

$result3 = mysql_query("select * from jtrb3 where name='上衣' and price < 300");
$row3 = mysql_fetch_array($result3);
组合

select * from jtrb1,jtrb2,jtrb3 
where jtrb1.name='上衣' and jtrb1.price < 300
and   jtrb2.name='上衣' and jtrb2.price < 300
and   jtrb3.name='上衣' and jtrb3.price < 300
组合这里,在数据库里查询,3个数据库里都有一条相同的记录,但它只列出一条,我想把三条都列出来,这里要怎么写? 还有
<?php 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("test", $con);
$query="SELECT * FROM jtrb1,jtrb2,jtrb3 WHERE jtrb1.name='上衣' and jtrb2.name='上衣' and jtrb3.name='上衣'";
$result= mysql_query($query,$con)or die(mysql_error());
$row= mysql_fetch_array($result);
while($row)
  {
	  echo $row['jtrb1.Name']."<br>";
	  //下面省略
  }
  mysql_close();
?>
我这样子写输出空白。请大神指点。
什么是数据仓库呢?数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。 数据仓库建模的意义是什么呢?如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。 数据仓库建模的最终目的是什么呢?高性能:良好的数据模型能够帮助我们快速查询所需要的数据。低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。 本课程将基于理论和实践讲解数据仓库,包含基础知识:数据仓库建模方法论、数据仓库分层模型、数据仓库构建流程、事实表、维度表、指标体系、拉链表、维度模型等 ,基于真实电商业务作为实战,讲解电商数仓的整个构建过程,让大家在实战中理解和掌握数仓的理论知识。

21,886

社区成员

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

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