数据库中两个数据表,其中一个三个字段,第一个字段和第二个字段分别是一个范围的起始值和终止值.
第三个字段是对应范围的一个属性值,第一和第二两个字段设为主键.如
   起始    终止    属性
----------------------------
     1       10     a
     11      50     b
     51      200    c
     ......另一个数据表有若干字段,其中一个字段是一个数值,现在要根据这个数值找到在上面表中所属的范围,取对应的范围属性.
请问各位大侠,怎么设计SQL语句比较合理.
谢谢.

解决方案 »

  1.   

    select * from tableA a, tablevalue b where a.startvalue <= b.value and a.cutvalue >=b.value
      

  2.   

    SELECT a.属性
    FROM 表A a,表B b WHERE b.数值字段 BETWEEN
    ISNULL((SELECT 起始 FROM 表A WHERE 属性=a.属性),0) AND
    ISNULL((SELECT 终止 FROM 表B WHERE 属性=a.属性),0) P.S.未经测试
      

  3.   

    起始    终止    属性     字段4
    ----------------------------
         1       10     a       9
         11      50     b       39
         51      200    c       149
    用字段4查询不就成了。
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with ADOQuery1 do
      begin
        close;
        sql.Clear;
        sql.text:='select data_value from table1'+
                  ' where data_begin<'+edit1.Text+
                  ' and data_end>'+edit1.Text;
        try
          open;
          edit2.Text:=Fieldbyname('data_value').AsString;
        except
        end;
      end;
    end;