SELECT * FROM Product WHERE SmallProductClassNo=(SELECT SmallProductClassNo FROM BigProductClass WHERE BigDishClassNO=str) 
产品大类 有 01,02;01大类有小类01,02,03;02大类有小类
04,05
查找大类为01的所有产品名称,SQL语句怎么写~~!

解决方案 »

  1.   

    1、两个表join
    2、SELECT * FROM Product WHERE SmallProductClassNo in (SELECT SmallProductClassNo FROM BigProductClass WHERE BigDishClassNO='01')  
      

  2.   

    SELECT * FROM Product WHERE SmallProductClassNo in (SELECT SmallProductClassNo FROM BigProductClass WHERE BigDishClassNO='01')
      

  3.   

    =只能用在一个常量上,对于一个数据集,要用in、exists等。由于01大类具有小类,查询的时候属于一个数据集,用=的话,会报错。
      

  4.   

    ADOQueryStage->SQL->Add("SELECT * FROM T_Dish WHERE DishClassNo IN(SELECT DishClassNo FROM T_DishClass WHERE BigDishClassNO=:ITemp)");
        ADOQueryStage->Parameters->ParamByName("ITemp")->Value=CmbBigDishClass->Text.SubString(0,2);
      

  5.   

    额~~~我看不懂这些,只会sql,把表结构搞出来,我帮你弄好sql其他自己弄
      

  6.   

    上面的本身是没问题,但是你说不行,那么应该是表结构和数据的问题,你试试这个,或者给出表结构甚至数据来。瞎猜对大家没有意义SELECT  *
     FROM    Product a
     WHERE   EXISTS ( SELECT 1
                      FROM   BigProductClass b
                      WHERE  BigDishClassNO = '01'
                             AND a.SmallProductClassNo = b.SmallProductClassNo )  
      

  7.   

    product只是存有小类?然后要从BigProductClass 先去除01大类对应的小类然后再从product里面筛选是吧?