Я имею вопрос понимания внутренней и оставили присоединитьсяПроблема понимания внутреннего соединения или влево присоединиться
Я имею ниже запрос в outsystems
SELECT {CLD}.[Id], {CLD}.[Name], {CLD}.[Comments]
, {CLD}.[LastUpdateOn],min({Project}.[Number])
,count({Project}.[Number])
FROM {CLD}
INNER JOIN {Project} ON {Project}.[Id] = {CLDProjects}.[ProjectId]
INNER JOIN {CLDProjects} ON {CLD}.[Id] = {CLDProjects}.[CLDId]
WHERE
(
@IsJAXPM =1
or EXISTS (SELECT 1
FROM {CLDParticipant}
WHERE {CLDParticipant}.[CLDId] = {CLD}.[Id]
AND {CLDParticipant}.[UserId] = @UserId)
or EXISTS (SELECT 1
FROM {ProjectParticipantWidget}
INNER JOIN {ProjectParticipant} ON {ProjectParticipantWidget}.[ProjectParticipantId] = {ProjectParticipant}.[Id]
WHERE {ProjectParticipant}.[ProjectId] = {Project}.[Id]
AND {ProjectParticipant}.[UserId] = @UserId)
)
GROUP BY {CLD}.[Id], {CLD}.[Name], {CLD}.[Comments], {CLD}.[LastUpdateOn]
Выпуск Выбрать вытягивает все элементы CLD без уважения к проекту, я пытаюсь выбрать CLD, чей Project id = Project.Id. Я попробовал и стыки, но держать потянув все значения Ниже, как структура выглядит
Ваши условия соединения выглядят немного скремблированными, я даже не знал, что вы можете ссылаться на таблицы из последних объединений. (... и что с помощью '{' и '}'?) – Uueerdo
Вы можете ссылаться на таблицы из более поздних объединений (потому что SQL смешивает объединения вместе для оптимизации), но я согласен, что это очень трудно читать так. CLDPпроекты должны быть обязательно перед проектом для удобочитаемости. Что касается {}, они позволяют платформе OutSystems расширяться в имена виртуальных таблиц, а именно фактическое имя физической таблицы в базе данных. –
Те, кого боги уничтожат, сначала используют инструменты для разработки с конкретными «усовершенствованиями» для вендора ... –