If I have understood your question correctly, you have a shapefile of your company's business areas information and you want to attribute your CodePoint polygons and the Postcode sub-areas with the attribute for your business areas. If so, you want to do a spatial join. This is like a normal database table join but instead of joining tables by some common id field, you join the tables based on the intersection/overlap of geometry.
In QGIS you can do a spatial join by: Vector->Data Management Tools->Join Attributes By Location.
That's the theory and will work nicely in ArcGIS. HOWEVER DO NOT DO THIS IN QGIS!
It will give us unreliable results (note to self - must log this bug!) because the criteria QGIS uses for joing the data is a simple intersection with no account of actual overlap. Technically polygons intersect if their boundaries merely touch. In QGIS, your only options for summarizing the attributes are either
- Take attributes of first located feature
- Take summary of intersecting features (mean, min, max, sum, median)
The second option is fine if you have numeric data. You have business district ids, so a mathematical summary makes no sense and that leaves you with the first option and here's the problem: Your postcode areas can easily (and frequently will probably) be contained by one business district but touch another one. If the one it touches is considered 'first' by QGIS then you will get the wrong attribute joined. (If a QGIS developer wants to reproduce this error create two shapefiles. One is a grid of several polygons each 100km square (say) and the second one is a grid covering the exact same area but the polygons are 20km square this time. Then join attributes by location from the big grid to the little grid and note the attribution of polygons along the edges - it will not be from the big polygon covering the little one, but from the neightbour in most cases).
WORK AROUND:
Fortunately, attributes are transferred if you just do a normal intersect or union operation. So (until the QGIS bug is fixed) intersect your Business Districts withe your Postcodes: Vector->Geoprocessing Tools->Intersect No need to create an extra field first.
EDIT
Given your comments below do this instead:
1) Merge all your shapefiles by Vector->Data management tools->Merge shapefiles to one (no need to load them first if they are all in one folder)
2) If you CSV has a simple format of (say) two columns where one is your postcode and the other is the business area code, then once you have merged the shapefiles you can do a simple table join (instead of a spatial join). Load the CSV file Layer->Add Vector Layer (NOT as delimited text). Then open the properties of your merged postcodes, click on the 'Joins' tab. Click the green + and specify your relationship between the CSV and the postcodes (i.e. your postcode field in each case)