I have two tables (items and sub_items). Both tables have an asset_number column. I need a query that will let me add a new item only if the given asset_number is not present in either of the two tables.
            Asked
            
        
        
            Active
            
        
            Viewed 99 times
        
    2 Answers
0
            Can you be more specific on the fields?
Does your sub_items table have itemsId?
If yes, I think you can join those two tables and search for the new item?
Something like this:
SELECT I.item_id AS item_items_id, SI.item_id AS subitem_items_id FROM items I
INNER JOIN sub_items SI ON I.item_id = SI.item_id AND I.asset_number = SI.asset_number
WHERE I.item_id = -- if your new item has an item_id you can search it
If the new item doesn't have an ID, then maybe you can search by using a item name if there is a column?
 
    
    
        OHHO
        
- 143
- 2
- 9
- 
                    Thanks for your response. Rather than list all the fields (as most are irrelevant for the query), the items table has item_id and asset_number. The sub_items table has sub_item_id, item_id and asset_number. – sgspragg Dec 05 '15 at 00:11
- 
                    if that is the case, why not using INNER JOIN? – OHHO Dec 05 '15 at 00:13
- 
                    Which field would be best to INNER JOIN with? I basically want asset_number to be unique across both tables. This is the query I tried earlier, but it throws an error: SELECT item_id FROM items AS i INNER JOIN sub_items AS s USING (asset_number) WHERE asset_number=? – sgspragg Dec 05 '15 at 00:15
0
            
            
        You can search for your item in both tables at the same time, using a emulated outer join, if it returns nothing you can proceed the inserts. Refer to these link:
 
    
    
        Community
        
- 1
- 1
 
    
    
        Flávio Filho
        
- 475
- 4
- 14
- 
                    I'm not sure I have explained properly. It's not the item that I'm querying. I need to be able to add a new item to the table, but only if the asset_number provided for the new item does not appear in either of the two tables. This therefore makes asset numbers unique across both tables. – sgspragg Dec 05 '15 at 00:37
- 
                    That's ok, you can create a unique index for the fields asset_number, this for itself will guaranty that at least in each table the item can't be repeated. Before you insert a new item, you run a query, as described in my answer, to be sure that there are no other item with the same asset_number on any of the tables, then you proceed the insert. – Flávio Filho Dec 05 '15 at 02:27
 
    