表的结构:
create table
CREATE TABLE `DatawlValministry` (
   `ID` int(11) NOT NULL,
   `RecordNow` int(11) DEFAULT NULL,
   `DFid` int(11) DEFAULT NULL,
   `DFItem` varchar(300) DEFAULT NULL COMMENT '标题同步',
   `Val` varchar(5000) DEFAULT NULL COMMENT '总结内容',
   `UID` int(11) DEFAULT NULL COMMENT '用户编号',
   `FstCreate` datetime DEFAULT NULL,
   `LastModify` datetime DEFAULT NULL,
   `DTime` datetime DEFAULT NULL,
   `DTimeWrong` datetime DEFAULT NULL,
   PRIMARY KEY (`ID`),
   KEY `INDEX_UID` (`UID`),
   KEY `INDEX_DFid` (`DFid`),
   KEY `INDEX_DTime` (`DTime`)
 ) ENGINE=InnoDB DEFAULT CHARSET=gbk数据的值类似于:
ID DFid  DFitem   val
1   11   稿件数   10
2   12   点数     5
3   13   记录     34 
4   14   得分     45
5   11   稿件数   55
6   12   点数     22
7   13   记录     13
8   14   得分     44
.   .     .       .
.   .     .       .
.   .     .       .  
.   .     .       .
DFid字段和DFitem字段类似于key=>value形式。怎么在列表显示key=>value的值??

解决方案 »

  1.   

    列表是说html页面?搜索取得 dfid 和dfitem  之后 循环组成一个关系数组,然后循环这个数组输出不就可以了吗?
      

  2.   

    但是我只是想得到dfid=11和dfid=12的数据,该sql怎么写?
    我的是这样写的。
    select b.val as bval,c.val as cval from table a 
    left join table b on a.dtime=b.dtime and a.uid=b.uid and b.dfid=11
    left join table c on a.dtime=c.dtime and a.uid=c.uid and c.dfid=12
    where …………
      

  3.   

    根据dfid的值对应显示dfitem的标题对应显示val值。假如知道dfid的值等于11,12的话。sql怎么写?
      

  4.   


    要SQL?等别人来答你吧,要不转到Mysql版块去。
      

  5.   

    数组是php的结构,mysql乍样也做不到php的数组,就算结构出来了,php读出来也要格式化
      

  6.   

    就算sql查询出来是一个对象,我通过循环可以出来,关键是无法确定dfid=>dfitem=>val的数据怎么随机显示出来。现在知道dfid=11和dfid=12
      

  7.   

    但是一旦dfid的值有多个时,我要显示dfitem(标题)=>val(值)的话,就会出现多列,我上面的sql语句就会有N多个left join 当前相同的表。这样执行速度跟不上。
      

  8.   

    key=>value我的理解,就是key value之间有个单一映射,,key能决定value的值你的数据例子,看不出有此关系。,,,或者你描述清楚,你要显示出什么数据呢?
      

  9.   

    数据的值类似于:
    ID DFid DFitem val
    1 11 稿件数 10
    2 12 点数 5
    3 13 记录 34  
    4 14 得分 45
    5 11 稿件数 55
    6 12 点数 22
    7 13 记录 13
    8 14 得分 44
    . . . .
    . . . .
    . . . .   
    . . . .
    dfid的值是11,12,13,14对应的dfitem是;稿件数,点数,记录数,得分,val值是不一样的。依次类推……
      

  10.   

    ID DFid DFitem val  uid
    1 11   稿件数   10   1
    2 12   点数     5    1
    3 13   记录    34    1
    4 14   得分    45    1
    5 11   稿件数  55    2
    6 12   点数    22    2
    7 13   记录    13    2
    8 14   得分    44    2
    这样清楚点……
      

  11.   

    请问大家知道mysql的key->value怎么进行查询数据呢?
      

  12.   

    搜索返回的数组key是'dfid',value是每一行的值。所以要实现你要的,应该另外新建一个数组,然后把键和值推进去。$arrNewArray = array();
    while($row = mysql_fetch_assoc($result)){
       $arrNewArray[$row['dfid']] = $row['dfitem'];
    }
    print_r($arrNewArray);//$result是你搜索出来的结果,我就不写了。
      

  13.   

    首先我不明白为什么不设计成这种结构...
    表1
    uid DFid val 
    1    11   10
    1    12   5
    1    13   34
    1    14   45
    ...表2
    DFid DFitem
    11   稿件数
    12   点数
    13   记录
    14   得分你在处理多对多对象关系时没有合理设计表结构,导致纠结...
      

  14.   


    如果只是随机获取,那也很简单呀,生成一个随机数(范围不用我说了把),然后$arrNewArray[$random]