Q: Getting information from one layer in attribute table of another layer In the picture you can see polygon number 39a in the center. This polygon is drawn on one layer. The layer underneath holds information with soil conditions (green and red). You can see that polygon 39a is laying in 'vochtig zand'(red) and a little bit in 'Nat zandleem'(green).
In the 39a polygon attribute table, I want to see the soil condition which is most present within the surface of the polygon. Not by making a new 'clipping' shapefile but by a formula or expression. Is this possible?
Can anybody help me with the expression formula? 


A: Yet another approach...using Virtual Layer.
 
Above is an example with soil polygon layer with red vochtig zand and green nat zandleem is defined in soiltype field.  Red polygon (your 39a) is on my_polygon layer.
By selecting menu Layer | Add Layer | Add/Edit Virtual Layer and after [import] your layers, you can set up a query like below:

The query is:
SELECT round(st_area(v_zand)/st_area(my_polygon.geometry)*100,3)||'%' AS 'voching zand (%)'
FROM my_polygon,
(SELECT st_intersection(soil.geometry, my_polygon.geometry) AS v_zand
 FROM soil, my_polygon WHERE soil.soiltype = 'vochtig zand')

When you open the attribute table of the virtual layer, it will show the percentage of vochtig zand. 
 
Please change layer/field name in the SQL syntax as required.
EDIT ... as suggested by @artwork21
SELECT 
  CASE 
    WHEN st_area(v_zand) > (st_area(my_polygon.geometry) - st_area(v_zand)) THEN 'vochtig zand'
    WHEN st_area(v_zand) = (st_area(my_polygon.geometry) - st_area(v_zand)) THEN 'equal'
    WHEN st_area(v_zand) < (st_area(my_polygon.geometry) - st_area(v_zand)) THEN 'nat zandleem'
  END 
  AS Predominant 
FROM my_polygon,
(SELECT st_intersection(soil.geometry, my_polygon.geometry) AS v_zand
 FROM soil, my_polygon WHERE soil.soiltype = 'vochtig zand')


