Vous devez sélectionner les données que vous faites déjà, puis en boucle sur elle l'obtenir dans le format requis, et parce que les champs ont les mêmes noms, le plus facile pour utiliser des alias ou ils vont juste s'écraser les uns les autres dans les données retournées (mais vous pouvez utiliser mysql_fetch_row à la place, ce qui retourne un tableau indexé numériquement).
Par exemple:
$sql = "select tb1.f1 as tb1f1,tb1.f2 as tb1f2,tb2.f1 as tb2f1 from tb1,tb2";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
$result['t1']['f1']=$row['tb1f1'];
$result['t1']['f2']=$row['tb1f2'];
$result['t2']['f1']=$row['tb2f1'];
}
(La citation a été mal dans votre sql aussi)
Cela ne traitera pas plusieurs lignes non plus, mais votre question genre de implique que vous ne jamais attendez une rangée?
alias WithOUT:
$sql = "select tb1.f1,tb1.f2,tb2.f1 from tb1,tb2";
$result = mysql_query($sql);
while ($row = mysql_fetch_row($result)) {
$result['t1']['f1']=$row[0];
$result['t1']['f2']=$row[1];
$result['t2']['f1']=$row[2];
}
Je préfère la première version, sauf si vous avez une bonne raison d'utiliser la seconde, comme moins susceptibles d'entraîner des erreurs si vous changez jamais sql ou ajouter des champs, etc.
EDIT:
Prendre l'idée de méta-données de la réponse ci-dessous ....
<?php
mysql_connect('localhost', 'username', 'password');
mysql_select_db('dbname');
$result = mysql_query('select tb1.f1, tb1.f2, tb2.f1 from tb1, tb2');
$meta = array();
for ($i = 0; $i < mysql_num_fields($result); ++$i) {
$meta[$i] = mysql_fetch_field($result, $i);
}
while ($row = mysql_fetch_row($result)) {
foreach($row as $key=>$value) {
$out[$meta[$key]->table][$meta[$key]->name]=$value;
}
}
semble faire exactement ce que vous recherchez - bien que vous ne puissiez toujours obtenir qu'une ligne à la fois.
facilement mis à jour pour stocker plusieurs lignes avec une autre dimension sur le tableau:
Change:
$out[$meta[$key]->table][$meta[$key]->name]=$value;
Pour:
$out[][$meta[$key]->table][$meta[$key]->name]=$value;
que diriez-vous de maintenant? Je l'ai mis à jour à la lumière de ce que dit Bill Karwin. – benlumley