2013-06-12 67 views
0

我不能看到任何錯誤,但誰知道。MySQL子查詢語法錯誤

此查詢的工作:

select distinct id_mat_bauteil from material_bestueckungslinien E where exists(
        select id_mat_bauteil from(
           select id_mat_bestueckungslinie from (
            select id_mat_bestueckungslinie, id_material from material_musterbestueckungen A 
            union all 
            select id_mat_bestueckungslinie, id_material from material_sonderbestueckungen B) C 
           where C.id_material = 10154) D 
        where D.id_mat_bestueckungslinie = E.id_mat_bestueckungslinie) 

但是,如果我與另一個子查詢擴展這個查詢它給了我一個錯誤:

Select * from material_bauteile Z 
    where exists (
     select distinct id_mat_bauteil from material_bestueckungslinien E where exists(
       select id_mat_bauteil from(
          select id_mat_bestueckungslinie from (
           select id_mat_bestueckungslinie, id_material from material_musterbestueckungen A 
           union all 
           select id_mat_bestueckungslinie, id_material from material_sonderbestueckungen B) C 
          where C.id_material = 10154) D 
       where D.id_mat_bestueckungslinie = E.id_mat_bestueckungslinie) F 
     where F.id_mat_bauteil = Z.id_mat_bauteil) 

錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'F where F.id_mat_bauteil = Z.id_mat_bauteil)' at line 10

+0

更換最後兩行用'其中D.id_mat_bestueckungslinie = E.id_mat_bestueckungslinie)AND id_mat_bauteil = Z.id_mat_bauteil)'匹配 –

回答

0

你似乎有給出用於EXISTS子句的子查詢的別名,這是不需要的,然後使用另一個WHERE子句(即, e,你的*選擇不同的id_mat_bauteil *有2個WHERE子句)。

此外,您從不返回此字段的子選擇中選擇id_mat_bauteil。然而這個問題適用於舊的和更新後的報表

經與我想你正在嘗試做的一齣戲,像下面這樣可能更爲有效: -

SELECT DISTINCT z.* 
FROM material_bauteile Z 
INNER JOIN material_bestueckungslinien E 
ON Z.id_mat_bauteil = E.id_mat_bauteil 
INNER JOIN (SELECT id_mat_bauteil FROM material_musterbestueckungen WHERE id_material = 10154 
      UNION 
      SELECT id_mat_bauteil FROM material_sonderbestueckungen WHERE id_material = 10154) C 
ON E.id_mat_bauteil = C.id_mat_bauteil 

注意這是假設該字段是id_mat_bauteil上* material_musterbestueckungen *和* material_sonderbestueckungen *上和隨* material_bestueckungslinien *