2012-09-03 1 views
0

Это должно быть проще, чем я это делаю, но здесь я схожу с ума. То, что я хочу сделать, это создать представление из трех таблиц, таких как, например:Mysql Просмотр с условным столбцом

SELECT tableA.name, tableB.id, tableB.categoryID, tableC.categoryParentID 
FROM tableB, tableA where tableA.id=tableB.id JOIN tableC on 
tableC.categoryID = tableB.categoryID; 

достаточно просто. Однако я хочу, чтобы в случае, когда tableB.categoryID имеет значение NULL, я хочу, чтобы tableC.categoryParentID отображался как значение NULL, а не как значение категорииParentID.

До сих пор с моими результатами я либо мог получить таблицу, чтобы показать все строки, где tableB.categoryID IS NOT NULL, и полностью исключить строки, которые имеют нулевое значение для категорииID - я не хочу этого делать - ИЛИ Я получаю некоторые странные вариации, которые включают в себя каждую строку для категорииParentID от tableC для каждой строки из таблицыB, которая дает мне более 3 000 000 строк, а также неверна.

Если это неясно, я могу объяснить больше.

Заранее спасибо.

+0

Это звучит, как вы хотите LEFT JOIN вместо INNER JOIN – Taryn

ответ

1

Если я правильно понять вас, что вы хотите:

SELECT tableA.name, 
     tableB.id, 
     tableB.categoryID, 
     tableC.categoryParentID 
    FROM tableA 
    JOIN tableB 
    ON tableB.id = tableA.id 
    LEFT 
OUTER 
    JOIN tableC 
    ON tableC.categoryID = tableB.categoryID 
; 

(см the "left outer join" section of the Wikipedia article on SQL joins.)

+0

Это работало отлично! Благодарю. Я попробую статью wiki ... по какой-то причине попытка понять синтаксис JOIN всегда заставляет мои глаза залить немного. – user1167442

+0

@ user1167442: Добро пожаловать! – ruakh

+0

удален - как не долго – user1167442