Мне нужно сделать SQL с, если тогда еще, чтобы объединить таблицы, если поле не является нулевым? - PullRequest
0 голосов
/ 13 декабря 2011

Мне нужен SQL-запрос, который даст мне что-то вроде этого, где, если поле пустое, оно не выполняет объединение

SELECT AdminID,tblapartments.NameNo, tblgarages.GarageID, tblclients.Name FROM tbladmin,tblclients,tblgarages,tblapartments WHERE tblclients.ClientID =tbladmin.ClientID AND
IF (tbladmin.ApartmentID != null)
{
tblapartments.ApartmentID = tbladmin.ApartmentID
}
AND If(tbladmin.GarageID != Null)
{
tblgarges.GarageID = tbladmin.GarageID
}

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

Если я что-то упустил, это должно быть только внешнее соединение.

SELECT 
    AdminID,
    tblapartments.NameNo, 
    tblgarages.GarageID, 
    tblclients.Name 
FROM 
    tbladmin INNER JOIN tblclients ON tbladmin.ClientID = tblclients.ClientID
    LEFT OUTER JOIN tblgarages ON tbladmin.GarageID = tblgarages.GarageID
    LEFT OUTER JOIN tblapartments ON tbladmin.ApartmentId = tblapartments.ApartmentID
2 голосов
/ 13 декабря 2011

Вы можете использовать LEFT JOIN s, когда объединенный столбец не существует в другой таблице, в результате получается множество полей NULL:

SELECT AdminID,tblapartments.NameNo, tblgarages.GarageID, tblclients.Name
FROM tbladmin
INNER JOIN tblclients
  ON tbladmin.ClientID = tblclients.CliendID
LEFT JOIN tblgarages
  ON tbladmin.GarageID = tblgarages.GarageID
LEFT JOIN tblapartments
  ON tbladmin.ApartmentID = tblapartments.ApartmentID
1 голос
/ 13 декабря 2011

Я не верю, что этот тип логики if является стандартом SQL. Вы могли бы реализовать его в процедурном языке SQL, таком как PL / SQL, plpgsql ... однако, чтобы выполнить то, что вам нужно, после того, как я думаю, что левое соединение присоединится к тому, на что вы должны смотреть.

SELECT AdminID,tblapartments.NameNo, tblgarages.GarageID, tblclients.Name 
FROM tbladmin a 
join tblclients b on b.ClientID = a.ClientID
left join tblapartments c on c.ApartmentID = a.ApartmentID
left join tblgarges d on d.GarageID = a.GarageID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...