What I need to do is display the results ordered by the model name (easy part) but I need to insert the model alias and treat it just like a model name so it gets inserted in alphabetical order with the model_names..
I do not really understand what you mean here. If a sort is done, it must be done with either model name or model alias as the first criterion. One of them has to be the second criterion, upon which it would be used to sort within those regarded as equal for the first criterion. This can of course be done from within the SQL statement.
First off it is appending my new value as a new element AND it isn't doing anything when the $row["model_alias"] == ''..
You have bug that has to do with post-increment. Take for example:
$dataset[$i++] = $row;
$dataset[$i]['sort_name'] = $row["model_alias"];
Let $i = 0. Then in the first line in the above code snippet, $row is added as an element to $dataset[0]. In the next line, $row["model_alias"] is assigned to $dataset[1]['sort_name'], not $dataset[0]['sort_name'].
In fact, it looks like sort_name is not very useful since it duplicates model_alias in the same structure. Your code could be reduced to:
$dataset = array(); // Will hold all our data returned from DB
while ($row = mysql_fetch_assoc($result))
{
$dataset[] = $row;
}