2013-02-27 2 views
4

У меня есть 3 таблицыЕсли Регистрация Возврат NULL, то сделать следующее

Table1

ID NAMEID OTHER 
-------------------------------------- 
1 12345 BLAH 
2 23456 BLAH 
3 25896 BLAH 
4 74896 BLAH 
5 95124 BLAH 
6 63258 BLAH 
7 99999 BLAH 

TABLE2

TID Name 
------------------------------------- 
12345 Apple 
23456 Orange 
25896 Banana 
74896 Grape 
95124 Lime 
63258 Berry 

Table3

ID Start_Date End_Date Alt_Name 
------------------------------------- 
9999  BLAH  BLAH  Pears 
12345 BLAH  BLAH    
23456 BLAH  BLAH  Orange 

Отношения

Table1.NAMEID = Table2.TID 
Table1.ID  = Table3.ID 

Иногда NameID не будет найден в Table2.TID так, если он не найден в table2 затем найти Таблицу 3.

Вот запрос и текущий результат

Select 
     Table1.ID 
     Table2.Name 
     Table3.Start_Date 
     Table3.End_Date 
     Table1.Other 
from Table1 Table1 
left outer join Table3 Table3 ON Table1.ID  = Table3.ID 
left outer join Table2 Table2 On Table1.NAMEID = Table2.TID 

Ток - Выходной

ID Name Start_Date End_Date Other 
------------------------------------------- 
1  Apple  Blah  Blah  Blah 
2  Orange  Blah  Blah  Blah 
3  Banana  Blah  Blah  Blah 
4  Grape  Blah  Blah  Blah 
5  Lime  Blah  Blah  Blah 
6  Berry  Blah  Blah  Blah 
7  NULL  Blah  Blah  Blah 

Выходной Я хочу

ID Name Start_Date End_Date Other 
------------------------------------------- 
1  Apple  Blah  Blah  Blah 
2  Orange  Blah  Blah  Blah 
3  Banana  Blah  Blah  Blah 
4  Grape  Blah  Blah  Blah 
5  Lime  Blah  Blah  Blah 
6  Berry  Blah  Blah  Blah 
7  Pears  Blah  Blah  Blah  

В таблице 3 Для каждого идентификатора Alt_Name не всегда существует, это также слишком мало.

ответ

4
SELECT a.ID, 
     COALESCE(b.Name, c.AltName, '-no name-') as `Name` 
     c.Start_DATE, 
     c.End_DATE, 
     a.Other 
FROM table1 a 
     LEFT JOIN table2 b 
      ON a.nameID = b.tid 
     LEFT JOIN table3 c 
      ON a.NameID = c.ID 
+0

Большое спасибо, это было очень простое решение :) – Mowgli

+0

вы радушны ': D' –

+0

Я никогда не понимал, что делал Coalesce, но теперь я благодаря вам. – Mowgli

Смежные вопросы