SELECT DISTINCT 
      PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code 
FROM (order_products inner JOIN 
      products ON order_products.p_id = products.id) 
right outer JOIN 
      PDClass ON LEFT(products.class_code, 4) = PDClass.id_code 
WHERE len(PDClass.id_code) = 4 
错误提示:不支持连接表达式。
如果把right outer join换成inner join或者left join就没事,但不是我要的数据集,各位斑竹能不能帮我解决一下

解决方案 »

  1.   

    SELECT DISTINCT 
          PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code 
    FROM order_products inner JOIN 
          products ON order_products.p_id = products.id) 
    right outer JOIN 
          PDClass ON LEFT(products.class_code, 4) = PDClass.id_code 
    WHERE len(PDClass.id_code) = 4 
      

  2.   

    happyflystone你的答案的提示是:
    FROM 子句语法错误。
      

  3.   

    SELECT DISTINCT 
          PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code 
    FROM order_products inner JOIN 
          products ON order_products.p_id = products.id
    right outer JOIN 
          PDClass ON LEFT(products.class_code, 4) = PDClass.id_code 
    WHERE len(PDClass.id_code) = 4 sorry
      

  4.   

    SELECT DISTINCT 
          PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code 
    FROM order_products inner JOIN 
          products ON order_products.p_id = products.id --)
    right outer JOIN 
          PDClass ON LEFT(products.class_code, 4) = PDClass.id_code 
    WHERE len(PDClass.id_code) = 4 
      

  5.   

    语法错误 (操作符丢失) 在查询表达式 'order_products.p_id = products.id
    right outer JOIN 
          PDClass ON LEFT(products.class_code, 4) = PDClass.id_code' 中。
      

  6.   

    SELECT DISTINCT 
          PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code 
    FROM PDClass 
    left JOIN 
          products ON LEFT(products.class_code, 4) = PDClass.id_code 
    inner JOIN 
          order_products ON order_products.p_id = products.id 
    WHERE len(PDClass.id_code) = 4 
      

  7.   

    快搞定了
    SELECT DISTINCT 
          PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code 
    FROM (order_products right outer JOIN 
          products ON order_products.p_id = products.id) 
    right outer JOIN 
          PDClass ON LEFT(products.class_code, 4) = PDClass.id_code 
    WHERE len(PDClass.id_code) = 4 
    拿到了预期的结果,现在还差最后一个orders表需要连上去了,条件是CStr(orders.ID)=order_products.Order_id
    哪位大哥帮忙看看
      

  8.   

    access的
    快搞定了
    (SELECT DISTINCT 
          PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code, 
          SUM(order2.totalprice)*PDClass.brokerage AS total1,0 as total2
    FROM ((order2  RIGHT OUTER JOIN
          products ON order2.pcode = products.pcode) RIGHT OUTER JOIN
          PDClass ON LEFT(products.class_code, 4) = PDClass.id_code)
    WHERE (len(PDClass.id_code) = 4)
    GROUP BY PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code)
    union
    (
    SELECT DISTINCT PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code,0 as total1, SUM(order_products.sub_total) AS total2 FROM (((order_products LEFT OUTER JOIN orders ON order_products.order_id = CSTR(orders.ID)) RIGHT OUTER JOIN products ON order_products.p_id = products.id) RIGHT OUTER JOIN PDClass ON LEFT(products.class_code, 4) = PDClass.id_code)WHERE (len(PDClass.id_code) = 4) GROUP BY PDClass.brokerage, PDClass.id, PDClass.class_name, PDClass.id_code)
    现在还需要把total1和total2求和输出到一个记录集去就完了,不知道怎么搞到一起去