2013-11-19 3 views
0

У меня очень простая база данных. Он содержит 3 таблицы. Первая - это первичная таблица входных данных, в которую входят значения. Второе и третье - чисто для перевода значений в имена для представления. Когда я просматриваю строки в таблице 1, я вижу, что столбец businessUnit содержит допустимые значения во всех строках. Когда я добавляю таблицу Business_Units (3-я таблица в этом БД), все, кроме 2-х строк, уходят, и, несмотря на то, что значение businessUnit равно 1 в 1-й таблице, представление дает им разные имена.Просмотр неправильных данных

Я создал диаграмму БД и загрузил скриншот imgur. Ссылка: http://imgur.com/jXF7L1R

enter image description here

У меня есть только 2 отношения в таблице. Один из equipType на New_Equipment_User в id в Equipment_Type и один из businessUnit в New_Equipment_User в id в Business_Units. Странно то, что Тип оборудования работает отлично, но когда я точно копирую таблицу, отношения и информацию о просмотре, это не работает. Вместо 6 строк появляются только 2, которые имеют одно и то же значение в businessUnit, но дают для него 2 разных имени.

В случае, если это имеет значение, вот мой взгляд запроса:

SELECT dbo.New_Equipment_User.id, dbo.Equipment_Type.name AS equipType, dbo.New_Equipment_User.jobNumber,  dbo.New_Equipment_User.costCode, 
    dbo.New_Equipment_User.reason, dbo.New_Equipment_User.mobile, dbo.New_Equipment_User.mobileQty, dbo.New_Equipment_User.mobileComment, 
    dbo.New_Equipment_User.laptop, dbo.New_Equipment_User.laptopQty, dbo.New_Equipment_User.laptopComment, dbo.New_Equipment_User.desktop, 
    dbo.New_Equipment_User.desktopQty, dbo.New_Equipment_User.desktopComment, dbo.New_Equipment_User.modem, dbo.New_Equipment_User.modemQty, 
    dbo.New_Equipment_User.modemComment, dbo.New_Equipment_User.printer, dbo.New_Equipment_User.printerQty, dbo.New_Equipment_User.printerComment, 
    dbo.New_Equipment_User.camera, dbo.New_Equipment_User.cameraQty, dbo.New_Equipment_User.cameraComment, dbo.New_Equipment_User.dateRequired, 
    dbo.New_Equipment_User.requestedBy, dbo.New_Equipment_User.dateRequested, dbo.New_Equipment_User.approvalStatus, 
    dbo.Business_Units.name AS businessUnit 
FROM dbo.New_Equipment_User 
    JOIN dbo.Equipment_Type ON dbo.New_Equipment_User.equipType = dbo.Equipment_Type.id 
    JOIN dbo.Business_Units ON dbo.New_Equipment_User.id = dbo.Business_Units.id 
WHERE (dbo.New_Equipment_User.approvalStatus = '0') 

А вот образ точки зрения, так как он легче читать: http://imgur.com/pZ97ehQ

enter image description here

ли кто-нибудь может чтобы помочь, почему это может произойти?

+1

Вы должны опубликовать некоторые данные (не изображения, пожалуйста). – Andrew

+1

Почему вы не используете псевдонимы для имен таблиц? Ваш код будет в два раза короче. –

+0

Я просто пытаюсь заставить его работать, прежде чем он будет приправлен. – Trido

ответ

1

Попробуйте использовать LEFT JOIN

SELECT ... 

FROM dbo.New_Equipment_User 
    JOIN dbo.Equipment_Type ON dbo.New_Equipment_User.equipType = dbo.Equipment_Type.id 
    LEFT JOIN dbo.Business_Units ON dbo.New_Equipment_User.id = dbo.Business_Units.id 

Это гарантирует, что все dbo.New_Equipment_User и все dbo.Equipment_Type присутствует

+0

Эй. Это приблизило меня. Он по-прежнему показывает NULL, когда он должен указывать мне имя, в котором говорится, что теперь отображаются все столбцы, как это должно быть. – Trido

+0

'dbo.Equipment_Type.name' равно null? –

+0

Нет, тип оборудования всегда работал, это поле 'dbo.Business_Units.name'. Несмотря на наличие данных в каждой строке для этого столбца, который соответствует ключу в его таблице, он либо отображает неверные данные (таблица говорит 1, которая является корпоративной, но показывает Civil), либо отображает NULL. – Trido

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