SELECT COUNT(*)
  FROM PARTY PARTY
  LEFT OUTER JOIN PARTY_IDENTITY I ON PARTY.PARTY_ID = I.PARTY_ID
 INNER JOIN AREA AREA ON PARTY.AREA_ID IN
                         (SELECT A.AREA_ID
                            FROM AREA A
                           START WITH A.AREA_ID = 2
                          CONNECT BY PRIOR A.AREA_ID = A.PARENT_AREA)
 WHERE PARTY.NAME = 'chyy001'
   AND ROWNUM < 100;这语句是有问题的,高手帮我分析下错在哪里,谢谢?

解决方案 »

  1.   

    SELECT COUNT(*) 
      FROM PARTY PARTY 
      LEFT OUTER JOIN PARTY_IDENTITY I ON PARTY.PARTY_ID = I.PARTY_ID 
    where exists( select 1 from 
                            (SELECT A.AREA_ID 
                                FROM AREA A 
                              START WITH A.AREA_ID = 2 
                              CONNECT BY PRIOR A.AREA_ID = A.PARENT_AREA) where area_id=PARTY.AREA_ID)
    and PARTY.NAME = 'chyy001' 
    不明白最后一句rownum<100是什么意思
      

  2.   

    高  rownum怕数据太多加上去的
    如果我查出来想知道party表的信息和地区表的信息改怎么写
      

  3.   

    select * from 
      party a left join area b
      on a.area_id=b.area_id
      left join party_identity c
      on a.party_id=c.party_id
      

  4.   

    AND ROWNUM < 100; 能起到你要的作用嘛SELECT COUNT(*) 只有一条记录返回。看不出有什么语法错误呀。你这里的错误提示是怎样的呀。语法错误的提示是怎样的。
      

  5.   

    INNER JOIN AREA AREA ON PARTY.AREA_ID IN 
                            (SELECT A.AREA_ID 
                                FROM AREA A 
                              START WITH A.AREA_ID = 2 
                              CONNECT BY PRIOR A.AREA_ID = A.PARENT_AREA) 
    两表连接中的 ON condition中没有出现AREA表的引用,自己看吧
      

  6.   

    楼上你好, 这里应该怎么用呢 。
    SELECT PARTY.PARTY_ID AS PARTYID, 
          PARTY.NAME AS PARTYNAME, 
          PARTY.AREA_ID AS AREAID, 
          PARTY.DEFAULT_ID_TYPE AS DEFAULTIDTYPE, 
          PARTY.PARTY_TYPE_CD AS PARTYTYPECD, 
          PARTY.ADDRESS_ID AS ADDRESSID, 
          PARTY.ADDRESS_STR AS ADDRESSSTR, 
          PARTY.SIMPLE_SPELL AS SIMPLESPELL, 
          PARTY.BUSINESS_PASSWORD AS BUSINESSPASSWORD, 
          PARTY.CREATE_DT AS CREATEDT, 
          PARTY.VERSION AS PARTYVERSION, 
          PARTY.INDUSTRY_CLASS_CD AS INDUSTRYCLASSCD, 
          PARTY.QUERY_PASSWORD AS QUERYPASSWORD, 
          PARTY.PARTY_STATUS_CD AS PARTYSTATUSCD, 
          PARTY.CREATOR, 
          I.IDENTIDIES_TYPE_CD AS IDENTIDIESTYPECD, 
          I.IDENTITY_NUM AS IDENTITYNUM, 
          (SELECT A.NAME FROM AREA A WHERE A.AREA_ID = 21) AS AREANAME 
      FROM PARTY PARTY 
      LEFT OUTER JOIN PARTY_IDENTITY I ON PARTY.PARTY_ID = I.PARTY_ID 
    WHERE PARTY.AREA_ID IN 
          (SELECT A.AREA_ID 
              FROM AREA A 
            START WITH A.AREA_ID = 21 
            CONNECT BY PRIOR A.AREA_ID = A.PARENT_AREA) 
      AND PARTY.SIMPLE_SPELL = 'LYX' 
      AND ROWNUM < 10 
    实际开发中写的sql语句,第一次执行很慢,后来执行很快,页面点击查询时有时候失败,有时候成功 
    出错时系统直接报ORA-01013 用户请求取消当前的操作 
    请教各位高手怎么解决,用的是oracle?
    需求是这样的 用户可以有多种查询方式 这里根据简拼查询?