我这里有两个MYSQl 表:表1: 存放的是商品信息,字段如下:商品ID、商品名字、商品规格 、商品产地
good_id////good_name////good_guige///good_chandi
 1 -------- 白菜 ------统货 --------- 山东
 2 ---------芹菜 ----- 统货 ----------河北
 5 ---------胡萝卜 ----统货 ----------河北...
...
...
表2:存放的是商品的价格信息,每种商品每个月都有不同的价格,字段如下:所属商品ID、商品价格、添加时间good_item_id....good_jiage....add_time
  1 -------------3.33 ------2001-1-1
  1 ------------ 4.33 ------ 2001-2-1
  1 ----------- 5.33 ------- 2001-3-1
  1 ---------- 6.33 ------- 2001-4-1
  1 --------- 7.33 ---------2001-5-1
  1 --------- 8.33 -------- 2001-6-1
  2 -------------3.33 ------2001-1-1
  2 ------------ 4.33 ------ 2001-2-1
  2 ----------- 5.33 ------- 2001-3-1
  2 ---------- 6.33 ------- 2001-4-1
  2 --------- 7.33 ---------2001-5-1
  2 --------- 8.33 -------- 2001-6-1
  5 -------------3.33 ------2001-1-1
  5 ------------ 4.33 ------ 2001-2-1
  5 ----------- 5.33 ------- 2001-3-1
  5 ---------- 6.33 ------- 2001-4-1
  5 --------- 7.33 ---------2001-5-1
  5 --------- 8.33 -------- 2001-6-1两个表中 good_id 、good_item_id 两个字段是关联字段我打算实现这样的查询效果:蔬菜列表:
------------------------------
菜名-----规格---- 产地 ---- 最新价格白菜-----统货 -----山东-----8.33
芹菜 .... ................ 7.77
胡萝卜 .... ............. ....在PHP中操作好像要多表联合查询,还有朋友告诉我做个视图也行,我是PHP新手,单表查询还可以,这个弄不来,求各位出个主意。我得难点在于,蔬菜品种太多了,价格也太多了(近5年的价格统计,表2数据过万),如何查询效率较高?并且,查询结果只显示 蔬菜的当月最新价格!

解决方案 »

  1.   

    分组取日期最大的一个。参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  2.   

        $query=mysql_query("select 表1.*,表2.good_jiage from 表1 left join(select good_jiage,add_date from 表2 order by add_date limit 1 )as pp on  表1.good_id=表2.yc_item_id") or die(mysql_error()) ;我用PHP ,上面语句执行错误:Unknown column '表2.good_jiage' in 'field list'
      

  3.   

    mysql> select yc_name as `名称`,
        ->  yc_chandi as `产地`,
        ->  yc_guige as `规格`,
        ->  yc_jiage as `最新价格`
        -> from yc_pinzhong a ,yc_jiage b
        -> where a.yc_id=b.yc_item_id
        -> and not exists (select 1 from yc_jiage where yc_item_id=b.yc_item_id and add_date>b.add_date);
    +-------+------+------+----------+
    | 名称  | 产地 | 规格 | 最新价格 |
    +-------+------+------+----------+
    | 白菜  | 安徽 | 统货 |     8.50 |
    +-------+------+------+----------+
    1 row in set (0.07 sec)mysql>
      

  4.   

    会耗时,因为你的表没创建相关索引。
    create index xxxx on yc_jiage (yc_item_id,add_date)