有这样两张表,arp_individual是病人信息表,arp_area是住院房间表,现在要实现按房间统计病人数情况生成一个XML文档以便被flash动画调用,病人信息中的room字段与住院房间表中的id关联,怎么实现这样的PHP代码:------------------------------------------------------------以下是病人信息表CREATE TABLE `arp_individual` (
  `id` int(11) NOT NULL default '0',
  `individualid` varchar(60) character set latin1 default NULL,
  `sex` int(11) default NULL,
  `room` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;------------------------------------------------------------以下是住院房间表CREATE TABLE `arp_area` (
  `id` mediumint(8) NOT NULL auto_increment,
  `areaname` longtext,
  `nurse` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2059 DEFAULT CHARSET=utf8;------------------------------------------------------------以下是生成的XML数据格式<?xml version="1.0" encoding="utf-8"?>
<data>
<area id="A01" title="常规治疗1区" value="常规治疗1区,人数:6人,护士:林晓岚" />
<area id="A02" title="常规治疗2区" value="常规治疗1区,人数:5人,护士:林晓岚" />
......
<area id="F09" title="急诊9区" value="急诊9区,人数:8人,护士:张梅颖" />
</data>

解决方案 »

  1.   

    DOMDocument生成
    另没有看出来这两张表是怎么关联的,推测可能有第三张表吧。
      

  2.   

    还在搞医院的东西,我以前做过医院的单。
    有几个经验:
    1 私人医院全tmd 的奸商,要有一定的尺度,不要被人忽悠得到处转。
    2 公立医院,资金要等好久,审批程序极期麻烦。
    所以劝一句,没有很NB的关系,医院这趟水,没要涉太深~
      

  3.   

    谢谢楼上提醒,我是这个医院的信息管理员,所以不用担心。接二楼的说吧,没有第三张表,要有也是住院房间的内连接查询,我想要的查询结果select count(*) from  arp_individual where room = (select id from arp_area where areaname like 'A01%')是这样的,但是子查询出来的结果不止一条,该如何写查询语句,这个语句需要循环查询,才能得出结果,如何使语句更简洁,只要一个查询就能出结果的,然后将结果赋给数组,输出XML,就这样,不知道看懂了没有?
      

  4.   

    为啥要like呢?
    SELECT COUNT(*), areaname  FROM arp_individual i
      LEFT JOIN arp_area  a ON  i.room = a.id  
      GROUP BY i.room 
      

  5.   

    四楼的朋友看懂意思了,但是房间存在A01-5这样的编号,所以我只能用like查询只属于A01区域的病人信息而不是统计单个房间信息。版主帮了我不少忙,在这里一并表示感谢,其实我说明白了,对应关系本身表中字段我都简略了,很少几个,不难理解。还有就是本身昨天应该及时回复大家的,可是电脑中毒,今天才回复!
      

  6.   

    先统计单个的,然后再循环处理A01-01这种情况。字符串操作总比mysql要来的容易些。~
      

  7.   

    我这样解决问题的首先对区域表中新建dong字段,通过语句create table bak_name as SELECT id,substring_index(areaname, '-', 1) AS dong FROM arp_area WHERE blongarea is not null;创建一张新表,通过语句update arp_area,bak_name set arp_area.dong= bak_name.dong where arp_area.id=bak_name.id同步两张表中的dong字段,然后就可以按照dong分组统计了,还有一点没完全搞好,等搞好了一并贴出来解决办法
      

  8.   

    早上的方法果然奏效,使用如下语句能够查询到分区域的信息,谢谢大家的帮忙!SELECT COUNT(*),a.dong FROM arp_individual i
      LEFT JOIN arp_area  a ON  i.room = a.id  
      GROUP BY a.dong
    ORDER BY a.dong desc
      

  9.   

    substring_index(areaname, '-', 1) 可直接用于 group 子句,何必要另建字段