2016-12-06 10 views
-1

後に冗長なフィールドを削除します。MySQLの - 私は、複数の結合テーブルにクエリを実行していたクエリ

SELECT TableA.*, 
     TableB.Data    as Data_B, 
     TableC.Data    as Data_C, 
     TableD.Data    as Data_D, 
     TableE.* 
FROM TableA  JOIN TableB   ON TableB.ID = TableA.ID 
       JOIN TableC   ON TableC.ID = TableB.ID 
       JOIN TableD   ON TableD.ID = TableC.ID 
       JOIN TableE   ON TableE.ID = TableA.ID 
WHERE DataToFind = '$SubmittedData' 

をそれは良い動作しますが、テーブルAがメインテーブルで、TableEはに関連する複数の子テーブルであるため、私がTableAフィールドで検索を実行すると、TableAレコードの数だけTableAの行が赤くなってしまいます。

私は私が私の検索を実行しただけで、AFTER DISTINCTにしたいので、私の理想的なクエリは次のようになります。

SELECT DISTINCT ID FROM 
(
SELECT TableA.*, 
     TableB.Data    as Data_B, 
     TableC.Data    as Data_C, 
     TableD.Data    as Data_D, 
     TableE.* 
FROM TableA  JOIN TableB   ON TableB.ID = TableA.ID 
       JOIN TableC   ON TableC.ID = TableB.ID 
       JOIN TableD   ON TableD.ID = TableC.ID 
       JOIN TableE   ON TableE.ID = TableA.ID 
WHERE DataToFind = '$SubmittedData' 
) 
WHERE ID IS NOT NULL 

しかし、私は、「予期しないトークン」や他の構文エラーを取得していますので、それは働いていません。

正しくフォーマットする方法を教えてもらえますか?

p.s.見つけたIDを使用して必要なときに回復できるので、いくつかのTableEレコードを失うかどうかは気にしません。

+0

phpとの関係は何ですか?ここにmysqlと変数があります。私たちはそれがどのように/どこに割り当てられているのかわかりません。 –

+0

問題はPHPに関連していません。例としては単なる可変変数です。フォーカスはMySQL上でなければなりません。 – Singee

+0

ミスマッチしないでください。私は編集で削除しました。 –

答えて

0

あなたの質問は結構です。 2があるので

SELECT DISTINCT TableA.ID 
FROM TableA JOIN 
    TableB 
    ON TableB.ID = TableA.ID JOIN 
    TableC 
    ON TableC.ID = TableB.ID JOIN 
    TableD 
    ON TableD.ID = TableC.ID JOIN 
    TableE 
    ON TableE.ID = TableA.ID 
WHERE DataToFind = '$SubmittedData'; 

あなたのバージョンでは、問題があります:あなたは明確なidをしたい場合はそれだけでは、すべての単一のSELECT文であること入れ、その後、

SELECT DISTINCT ID FROM 
(
    SELECT tableA.*, 
      TableB.Data    as Data_B, 
      TableC.Data    as Data_C, 
      TableD.Data    as Data_D 
      TableE.* 
    FROM tableA  JOIN tableB   ON tableB.ID = tableA.ID 
        JOIN tableC   ON tableC.ID = tableB.ID 
        JOIN tableD   ON tableD.ID = tableC.ID 
        JOIN tableE   ON tableE.ID = tableA.ID 
    WHERE DataToFound = '$SubmittedData' 
) xxx   <-- missing 
WHERE ProcedureID IS NOT NULL 
1

のようなサブクエリのテーブルの別名が欠落していますサブクエリにIDという列があります。それは別のエラーを生成します。

関連する問題