LEFT JOIN和之间有什么区别LEFT OUTER JOIN?
我见过名为LEFT OUTER JOIN或RIGHT OUTER JOIN的连接.在某些地方,我见过LEFT JOIN或RIGHT JOIN.我很困惑.
我在2天前发布了一个问题,但我无法理解解决方案提供的链接.
这些类型的连接是否相同,或两者之间是否存在某些差异?
我知道连接的用法,但有时当我无法确定哪个连接适合左边或右边时,我会遇到这种情况.
这是我被困的查询.
SELECT count(ImageId) as [IndividualRemaining],
userMaster.empName AS ID#,
CONVERT(DATETIME, folderDetails.folderName, 101) AS FolderDate,
batchDetails.batchName AS Batch#,
Client=@ClientName,
TotalInloaded = IsNull(@TotalInloaded,0),
PendingUnassigned = @PendingUnassigned,
InloadedAssigned = IsNull(@TotalAssigned,0),
TotalProcessed = @TotalProcessed,
Remaining = @Remaining
FROM
batchDetails
Left JOIN folderDetails ON batchDetails.folderId = folderDetails.folderId
Left JOIN imageDetails ON batchDetails.batchId = imageDetails.batchId
Left JOIN userMaster ON imageDetails.assignedToUser = userMaster.userId
WHERE folderDetails.ClientId =@ClientID and verifyflag='n'
and folderDetails.FolderName IN (SELECT convert(VARCHAR,Value) FROM dbo.Split(@Output,','))
and userMaster.empName <> 'unused'
GROUP BY userMaster.empName, folderDetails.folderName, …Run Code Online (Sandbox Code Playgroud) 我想要一个表中的信息,以及是否还有来自另一个表的匹配信息.
这是我的代码
$scoreObject = DB::table('responses')
->select('responses.id', 'responses.questions_id', 'responses.answer_id', 'responses.open_answer', 'responses.user_id', 'responses.scan_id',
'questions.question', 'questions.question_nr', 'questions.type', 'questions.totalsection_id',
'answers.id as answerID', 'answers.answer', 'answers.questions_id', 'answers.points'
)
->Join('answers as answers', 'responses.answer_id', '=', 'answers.id')
->Join('questions as questions', 'answers.questions_id', '=', 'questions.id')
->orderBy('questions.id', 'ASC')
->where('responses.scan_id', $scanid)
->where('responses.user_id', $userid)
->groupBy('questions.id')
->get();
Run Code Online (Sandbox Code Playgroud)
它返回所有与答案匹配的答案(answers.questions_id questions.id').一些响应没有匹配(因为没有respond.answer_id)但我仍然想要响应信息.
我怎样才能在laravel中获得这样一个左外连接?
LEFT JOIN并且LEFT OUTER JOIN工作方式完全相同。这意味着该关键字OUTER没有任何作用或者它是可选的。
为什么我们要包含一个对执行没有影响的关键字?