简体   繁体   中英

Left Join Display All Data From Table1 and Table2

I am trying to do a left join so that I get all of my rows from Table 1 even if there is no value corresponding to it in the second table.

My structures are:

Location Table:

ID     LocName
1      Trk1
2      Trk2
3      Trk3
4      Unk

Quantity Table:

ID    PartID   Quantity LocationID
1     1        2        1
2     3        12       2
3     2        6        1
4     6        8        3
5     6        5        1

I am trying to join but also make a query on a specific PartID. My query is:

SELECT   
INV_LOCATIONS.ID AS LocationID,  
INV_LOCATIONS.NAME AS LocationName,  
INV_QUANTITY.QUANTITY AS Quantity  
FROM INV_LOCATIONS  
LEFT JOIN INV_QUANTITY ON INV_LOCATIONS.ID = INV_QUANTITY.LOCATION_ID  
WHERE INV_QUANTITY.PART_ID = 1;

My output right now would be:

ID   LocName   Quantity
1    Trk1      5
3    Trk3      8

The Desired output is:

ID   LocName   Quantity
1       Trk1      5
2       Trk2      NULL/0
3       Trk3      8
4       Unk       NULL/0

I assume it is because I have the WHERE INV_QUANTITY.PART_ID = 1 and that is forcing it to be in the quantity table. I need to be able to verify it is on the right part but how do I also include it if it doesn't exist. I know I have done something very similar before but I cannot remember which project and so I cannot find the code anywhere.

You need to move the filtering logic to the ON clause:

SELECT il.ID AS LocationID, il.NAME AS LocationName,  
       iq.QUANTITY AS Quantity  
FROM INV_LOCATIONS il LEFT JOIN
     INV_QUANTITY iq
     ON il.ID = iq.LOCATION_ID AND iq.PART_ID = 1;

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