简体   繁体   中英

i need to do an sql with if then else to join tables if the field is not null?

i need an sql stament that will give me something like this where if a field is null it doesn't do the join

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
}

You can use LEFT JOIN s, when the joined column does not exist in the other table the result is a lot of NULL fields:

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

Unless I'm missing something, this should just be an outer join.

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

I do not believe that this type of if logic is SQL standard. You could possibly implement it in a procedural SQL langauge like PL/SQL, plpgsql ... however to accomplish what you after i think a left join what you should look at.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM