2016-07-01 4 views
-2

ここに私が受け取っているエラーがあります。なぜ「ALL」がクエリを壊していますか?

エラーの詳細:

SQLクエリの解析に失敗しました。 SQL構文を確認してください。いくつかのヒント:発生しました行58、列1で 解析エラー:ALL(これは「ALL」クローズドかっこ過去すぐ 1である。)

はここに私のクエリです。

SELECT ALL "TR-ID" . "TR-ID" , "Site List Data" . "TR-ID", 
           "Issue number from Issue Log", 
         "Project Risks" . 
           "Suvey Docs/Photos Uploaded to WS Repo", 
         "IPACK" . 
           "Submit for MIROR code", 
         "Forecasts" . 
           "Equipment Ordered Planned", 
           "Calix Blocker" 
FROM         
(SELECT   "TR-ID"  FROM  "Site List Data"  UNION 
SELECT  "TR-ID"  FROM  "Project Risks"  UNION 
SELECT  "TR-ID"  FROM  "IPACK"  UNION 
SELECT  "TR-ID"  FROM  "Forecasts")   
ALL  "TR-ID"      LEFT OUTER JOIN 
"Site List Data" ON ALL IDS. "TR-ID" = "Site List Data" . "TR-ID"  LEFT OUTER JOIN 
"Project Risks" ON ALL IDS. "TR-ID" = "Project Risks" . "TR-ID"  
LEFT OUTER JOIN 
"IPACK" ON ALL IDS. "TR-ID" = "IPACK" . "TR-ID"  
LEFT OUTER JOIN 
"Forecasts" ON ALL IDS. "TR-ID" = "Forecasts" . "TR-ID"  
+1

これはMySQLではありません。 – shmosel

+0

なぜあなたは最初にそれが必要だと思いますか? – shawnt00

答えて

0

あなたは右のみselectallキーワードを使用することができます、あなたはそれがすべての結合テーブルの後に繰り返してはいけません。しかし、あなたはallキーワードが全く必要ではありません。

0

すべては、mysqlのキーワードです。

私はあなたがサブクエリをエイリアスしようとしていると思うので、スペースが問題です。大括弧で囲んだ名前をスペースで囲むこと(引用符を削除すること)をおすすめします。 [ALL TR-IDS]

また、2つの異なる名前、ALL TR-IDとALL IDSを使用しました。これを試してみてください:

SELECT [ALL TR-IDS].[TR-ID], [Site List Data].[TR-ID], [Issue number from Issue Log], [Project Risks].[Suvey Docs/Photos Uploaded to WS Repo], IPACK.[Submit for MIROR code], Forecasts.[Equipment Ordered Planned], [Calix Blocker] FROM 
(SELECT [TR-ID] FROM [Site List Data] UNION SELECT [TR-ID] FROM [Project Risks] UNION SELECT [TR-ID] FROM IPACK UNION SELECT [TR-ID] FROM Forecasts) [ALL TR-IDS] 
LEFT OUTER JOIN [Site List Data] ON [ALL TR-IDS].[TR-ID] = [Site List Data].[TR-ID] 
LEFT OUTER JOIN [Project Risks] ON [ALL TR-IDS].[TR-ID] = [Project Risks].[TR-ID] 
LEFT OUTER JOIN IPACK ON [ALL TR-IDS].[TR-ID] = IPACK.[TR-ID] 
LEFT OUTER JOIN Forecasts ON [ALL TR-IDS].[TR-ID] = Forecasts.[TR-ID] 
+0

注:2番目の列は最初の列と同じにするか、またはnull(サイトリストデータにそのIDが含まれていない場合)のみです。 nullの場合、サイトリストデータの他の列もすべてnullになります。 – AjahnCharles

0

「すべてを選択」有効なコマンドですが、「すべては」デフォルトで、与えられていない場合を想定(つまり、「すべてを選択」または「個別の選択」の両方有効ですが、「選択」を使用して"select all"と同じです)

SQLコマンドで "all"が使用されているため、名前を避ける必要があります。

SELECT 
     `ALL_TR_IDS`.`TR-ID` 
    , `Site List Data`.`TR-ID` 
    , `Issue number from Issue Log` 
    , `Project Risks`.`Suvey Docs/Photos Uploaded to WS Repo` 
    , IPACK.`Submit for MIROR code` 
    , Forecasts.`Equipment Ordered Planned` 
    , `Calix Blocker` 
FROM (
     SELECT 
      `TR-ID` 
     FROM `Site List Data` 
     UNION 
      SELECT 
        `TR-ID` 
      FROM `Project Risks` 
     UNION 
      SELECT 
        `TR-ID` 
      FROM IPACK 
     UNION 
      SELECT 
        `TR-ID` 
      FROM Forecasts 
) `ALL_TR_IDS` 
     LEFT OUTER JOIN `Site List Data` ON `ALL_TR_IDS`.`TR-ID` = `Site List Data`.`TR-ID` 
     LEFT OUTER JOIN `Project Risks` ON `ALL_TR_IDS`.`TR-ID` = `Project Risks`.`TR-ID` 
     LEFT OUTER JOIN IPACK ON `ALL_TR_IDS`.`TR-ID` = IPACK.`TR-ID` 
     LEFT OUTER JOIN Forecasts ON `ALL_TR_IDS`.`TR-ID` = Forecasts.`TR-ID` 

PS:あなたは名にスペースを使用して停止した場合、それはあなたのSQLの人生は道に容易になるだろう。またMySQLでは、バッククォートではない。このような二重引用符を使用します。