Unfortunately, your problem cannot be easily solved by Calcluate Field. Since you are trying to extract several fields of information from another table for each of your Study Areas, I will have to recommend the unthinkable-- cursors. First you will want to create columns for each of the attributes you want (Area and Percentage coverage for each land use type per study area). Then, you will want to use an Update cursor to loop through each row, creating a search cursor afterwards to query the statistics table and fetch the data you are looking for based on your join field (Study Area ID). Here is some sample code.
#Create the variable which stores the path of the table to be updated infile = r"path" #Create the variable which stores the path to the stats table we will be searching intable = r"path" # Create update cursor for feature class rows = arcpy.UpdateCursor(infile) print "Update Cursor created" #For Loop goes through every row in the file provided and does what is listed below! for row in rows: row.lup0 = 0 row.lua0 = 0 #If you want default values, set them here where = "SATXT = '"+row.FID_Text+"'" #You need single quotes for a text field. This is one way to do it. rowsearch= arcpy.SearchCursor(intable, where) for x in rowsearch: if x.LANDUSE == 0: row.lup0 = x.perc row.lua0 = x.SUM_AREA #Create a check for each land use type so it will fetch the data rows.updateRow(row) #This should close the for loop so it updates the row every time through # Delete cursor and row objects to remove locks on the data del row del rows # after this the script stops print "All done!" It is a rather brutish method for setting and getting data, but it will work for a small variable set such as what you have. Simply repeat the land use number check for each one so you can set the appropriate values. I believe you could probably use dictionaries to maintain references to the field names and iterate through that, but this should do for now.