2つのテーブルがあります。1つはIDを持ち、もう1つは名前を持ちます。たとえば、一部のIDは必須ではありません(null許容です)。
rowId item1Id, item2Id, item3Id (item3Id can be null)
この2つのテーブルを結合すると、IDと名前が取得されます。ただし、item3 Idがnullの場合、その行は表示されません。
いくつかのデータ:
表1
rowId、item1Id、item2Id、item3Id
1、2、3、4
2、1、5、NULL
この場合、結果として1行(1行)が得られます。
したがって、表2に存在せず、行が表示されていない場合はnullですが、nullを表示したいと思います。したがって、これら2つのテーブルを結合したままにすると、結果は2行になります。
これはSQLです:
SELECT Recipes.recipeId, Recipes.userId,Users.firstName + ' ' + Users.lastName as userName, servingTypeId,
Codings.coding as servingType, categoryId, Codings_2.coding as healthAspects, continentId,
Codings_3.coding as continent, countryId, CodingsAssociated.coding as country, typeOfPreparationId,
Codings_4.coding as typeOfPreparation, flavourId, Codings_5.coding as flavour, preparationSkillId,
Codings_6.coding as preparationSkill, seasonId, activePreparationTime,
overallPreparationTime, isLocalDelight, servings, Codings_7.coding as season ,
calories, youTubeId, datePosted, isComposite, Recipes.isApproved, Recipes.timestamp, title,
localDelightRegion, otherFeatures, cookingInstructions
FROM Recipes LEFT OUTER JOIN
Codings ON Recipes.servingTypeId = Codings.codingKeyId LEFT OUTER JOIN
Codings as Codings_2 ON Recipes.categoryId = Codings_2.codingKeyId LEFT OUTER JOIN
Codings as Codings_3 ON Recipes.continentId = Codings_3.codingKeyId LEFT OUTER JOIN
CodingsAssociated ON Recipes.countryId = CodingsAssociated.codingKeyId LEFT OUTER JOIN
Codings as Codings_4 ON Recipes.typeOfPreparationId = Codings_4.codingKeyId LEFT OUTER JOIN
Codings as Codings_5 ON Recipes.flavourId = Codings_5.codingKeyId LEFT OUTER JOIN
Codings as Codings_6 ON Recipes.preparationSkillId = Codings_6.codingKeyId LEFT OUTER JOIN
Codings as Codings_7 ON Recipes.seasonId = Codings_7.codingKeyId LEFT OUTER JOIN
RecipesTranslations ON Recipes.recipeId = RecipesTranslations.recipeId LEFT OUTER JOIN
Users ON Recipes.userId = Users.userId
WHERE CodingsAssociated.languageId = @languageId AND Codings.languageId = @languageId
AND Codings_2.languageId = @languageId AND Codings_3.languageId = @languageId
AND Codings_4.languageId = @languageId AND
Codings_5.languageId = @languageId AND Codings_6.languageId = @languageId AND RecipesTranslations.languageId = @languageId
AND Codings_7.languageId = @languageId
たとえば、seasonIdがnullになることがあるため、Codings_7.codingの結合は表示されませんが、idがnullで、名前もnullであるこれらの行も表示しません。