I am using MySQL version 5.5 on Ubuntu. 
My database tables are setup as follows:
DDLs:
    CREATE TABLE 'asx' (
        'code' char(3) NOT NULL,
        'high' decimal(9,3),
        'low' decimal(9,3),
        'close' decimal(9,3),
        'histID' int(11) NOT NULL AUTO_INCREMENT,
        PRIMARY KEY ('histID'),
        UNIQUE KEY 'code' ('code')
    )
    CREATE TABLE 'asxhist' (
       'date' date NOT NULL,
       'average' decimal(9,3),
       'histID' int(11) NOT NULL,
       PRIMARY KEY ('date','histID'),
       KEY 'histID' ('histID'),
       CONSTRAINT 'asxhist_ibfk_1' FOREIGN KEY ('histID') REFERENCES 'asx' ('histID') 
       ON UPDATE CASCADE
    )
t1:
| code  | high   | low    | close  | histID (primary key)| 
| asx   | 10.000 | 9.500  | 9.800  | 1      
| nab   | 42.000 | 41.250 | 41.350 | 2      
t2: 
| date      | average | histID (foreign key) |
| 2013-01-01| 10.000  | 1                    |
| 2013-01-01| 39.000  | 2                    |
| 2013-01-02| 9.000   | 1                    |
| 2013-01-02| 38.000  | 2                    |
| 2013-01-03| 9.500   | 1                    |
| 2013-01-03| 39.500  | 2                    |
| 2013-01-04| 11.000  | 1                    |
| 2013-01-04| 38.500  | 2                    |
I am attempting to complete a select query that produces this as a result:
| code | high   | low    | close  | asxhist.average | 
| asx  | 10.000 | 9.500  | 9.800  | 11.000, 9.5000  |
| nab  | 42.000 | 41.250 | 41.350 | 38.500,39.500   |
Where the most recent information in table 2 is returned with table 1 in a csv format. I have managed to get this far:
    SELECT code, high, low, close, 
    (SELECT GROUP_CONCAT(DISTINCT t2.average ORDER BY date DESC SEPARATOR ',') FROM t2 
    WHERE t2.histID = t1.histID)
    FROM t1;
Unfortunately this returns all values associated with hID. I'm taking a look at xaprb.com's firstleastmax-row-per-group-in-sql solution but I have been banging my head all day and the slight wooziness seems to be dimming my ability to comprehend how I should use it to my benefit. How can I limit the results to the most 5 recent values and considering the tables will eventually be megabytes in size, try and remain in O(n2) or less? (Or can I?)
 
     
    