2016-05-27 7 views
0

私はA、B、Cから引き出す必要がある3つのテーブルを持っています(データは整理されていません) 最初の2つのテーブルでJOINを使用しましたが、3番目のテーブルの処理方法はわかりません。サブクエリが一番良いのですか、別の結合を使用しますか? 助けてください? 2 WHERE節を使用できますか?私はMySQLでサブクエリを使用しようとしていますが、これは正しいアプローチですか?

SELECT DISTINCT `App`,`status`,`New App`,`Sunset` 
FROM `Table A` 
LEFT JOIN `Table B` 
ON `App (table A)`= `New App(Table B)` 
WHERE status NOT LIKE '%sunset%' 

これは、表Cである、それは私はあなたが参加するときは、テーブルのエイリアスを作成することができます

(SELECT `App ID`,`Status` 
    FROM `requests` 
    WHERE `Updated` < DATE_SUB(NOW(), INTERVAL 364 DAY)) 
+0

それは、あなたが確かに知るために 'EXPLAIN'を使う必要があるでしょう。 [これは参考になるかもしれません](https://www.sitepoint.com/using-explain-to-write-better-mysql-queries/) –

答えて

0

を必要とする要求日を持っています。

これらのすべてが共通の識別子を共有している場合は、これが最も速いアプローチです。あなたがfor INNER JOINs or OUTER JOINsを探しているなら

SELECT DISTINCT 
    a.App, b.status, c.NewApp AS c_new_apps 
FROM 
    TableA a 
LEFT JOIN 
    TableB b ON a.App = b.NewApp 
LEFT JOIN 
    TableC c ON c.AppId = b.NewApp 
WHERE 
    b.status NOT LIKE '%sunset%', 
    c.Updated` < DATE_SUB(NOW(), INTERVAL 364 DAY) 

また、検討してください。

+0

b.status NOT LIKE '%sunset%'をあなたがLEFT JOINの効果を無効にしているので、 – b1n0ys

関連する問題