向大家请教个问题,A表中有商品编号、商品名称、单价三个字段,
给出一个金额后,如何能在A表中随机找出几条记录,使得单价*数量等于这个金额,
金额随机,数量随机

解决方案 »

  1.   

    'select * from A where 单价*'+数量+'='+金额
    数量和金额为两个字符型数据
      

  2.   

    数据库遍历因为商品数量一般是整数,所以以遍历的方法实现,从第一条数据开始,拿你给出的金额和单价做比较,如果金额是单价的整数倍(这个整数大于等于1),就把这条记录读出来,可以显示到一个memo中,然后下一条...
      

  3.   

    select * from A where 单价*数量=金额
    数量和金额为两个字符型数据
    直接用语句实现,要按照楼上的,效率不知道多低,用数据库都没意义了
      

  4.   

    1.先找出合计金额=你要求的所有记录
    select * from a where 数量*单价=金额
    2.然后再随机找出你要的。
    select * 
    from (select * from a where 数量*单价=金额)
    order by newid仅限于SQLServer
      

  5.   

    try...select * from A where mod(金额,A.单价) = 0Oracle
      

  6.   

    用tclientdataset,建立内存索引,在去用locate这个属性,绝对快。前提是建立了索引!
      

  7.   

     简单一点  就按上面的select * from a where 数量*单价=金额 就能实现了。
      

  8.   

    谢谢大家的回复,但是“select * from a where 数量*单价=金额”是无法解决的,因为数量要求随机生成的,比如说A表三字段如下:
    编号   名称   单价
    001     A      2
    002     B      3.5
    003     C      2.8
    ...    ...     ...
    有个金额比如是50.2元,如何自动生成如下三字段的表:
    名称   单价   数量
    A       2      2
    B      3.5     10
    C      2.8     4
    单价固定是从A表中读出,数量不固定,需要随机生成,三种商品的单价*数量之和正好是这个50.2元。
    这似乎是个背包算法,弄了很久,无法解决