2015-04-07 3 views
-1

Я сфокусирован на создании запроса SQL-сервера. У меня есть две таблицы, показанные ниже, с отношением один к одному. Я хочу вытащить всех мероприятий и включить детские фотографии, если/где IsPrimary = true.Заявление о заключении SQL-оператора

SELECT dbo.Activity.ID, dbo.Activity.Details, dbo.ActivityPicture.DateUploaded, dbo.ActivityPicture.IsPrimaryPicture, dbo.ActivityPicture.ImageData 
FROM dbo.ReportTask 
INNER JOIN dbo.ActivityPicture ON dbo.Activity.ID = dbo.ActivityPicture .ActivityID AND dbo.ActivityPicture.IsPrimaryPicture = 'true' 

активность -ID -Details

ActivityPicture -ImageLocation -Описание -DateUploaded -IsPrimary -ActivityID

+1

У вас есть 2 таблицы, но ни один из них не является 'dbo.ReportTask' – Lamak

+0

Нам нужно больше ifnormation ответить на этот вопрос. Является ли 'dbo.ActivityPicture.IsPrimaryPicture' действительно char/varchar/nvarchar? Почему вы выбираете из ReportTask? Какова связь между Activity и ActivityPicture? 1 .. *, 0 .. *, 0..1, 1..1? –

+0

Является ли имя столбца 'dbo.ActivityPicture.IsPrimaryPicture' или' dbo.ActivityPicture.IsPrimary' (у вас есть оба пути в вашем сообщении) –

ответ

3

Изменить ваш INNER JOIN к LEFT OUTER JOIN. Это вернет все элементы из первой таблицы независимо от того, есть ли у них дочерние элементы во второй таблице.

+0

У нас действительно недостаточно информации, чтобы узнать, является ли это проблемой или нет, и есть другие проблемы с запросом, как написано, что это не будет адресовано. –

+0

@DanField На самом деле это правильный ответ, не знаю, какая другая информация будет действительно релевантной. – Lamak

+0

Что такое dbo.ReportTask? Почему он не спрашивает dbo.Activity? Является ли отношение между Activity и ActivityPicture 0..1/* или равно 1..1/* (если это так, тогда LEFT JOIN не требуется). Waht - тип данных IsPrimaryPicture? Имя столбца действительно IsPrimaryPicture или IsPrimary? –

0
SELECT dbo.Activity.ID, dbo.Activity.Details, dbo.ActivityPicture.DateUploaded, dbo.ActivityPicture.IsPrimaryPicture, dbo.ActivityPicture.ImageData FROM dbo.ReportTask LEFT JOIN dbo.ActivityPicture ON dbo.Activity.ID = dbo.ActivityPicture .ActivityID AND dbo.ActivityPicture.IsPrimaryPicture = 'true' 

Это вернет все активы и включит ActivityPicture.IsPrimaryPicture, где true.