
Envoyé par
armel18
il te faut préfixer chaque colonne par le nom de sa table
Effectivement !
Je vais détailler un peu en proposant une approche PHP ;-)
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<?php
$tables_list = array(
'table1',
'table2',
'table3',
'table4',
);
$field = "type";
$sql = "SELECT " . implode('.' . $field . ', ', $tables_list) . "." . $field . " FROM " . implode(', ', $tables_list);
echo '<pre>' . print_r($sql, true) . '</pre>'; |
Ceci affichera :
SELECT table1.type, table2.type, table3.type, table4.type FROM table1, table2, table3, table4
L'avantage est que la liste des tables peut-être récupérée via une requête SQL (plutôt que de définir l'array) :
et donc rien qu'en ajoutant une nouvelle table, le script l'utilisera automatiquement !
Attention cependant, ce script ne retournera qu'un seul champ (vu qu'ils portent tous le même nom). Pensez donc à ajouter un " AS var_name" afin qu'il soit utilisable ! (pour ce faire, il faudra faire une boucle, implode() ne suffisant plus)
Voilà, ce que ça pourrait donner avec la boucle :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $tables_list = array(
'table1',
'table2',
'table3',
'table4',
);
$field = "type";
$select = "";
foreach ($tables_list AS $v) {
$select .= $v . "." . $field . " AS " . $v . "_" . $field . ", ";
}
$select = rtrim($select, ', ');
$sql = "SELECT " . $select . " FROM " . implode(', ', $tables_list);
echo '<pre>' . print_r($sql, true) . '</pre>'; |
Et voici ce que ça donnera :
SELECT table1.type AS table1_type, table2.type AS table2_type, table3.type AS table3_type, table4.type AS table4_type FROM table1, table2, table3, table4
PS: Sorry pour l'attribut "sql" de la balise code, j'ai oublié de mettre les guillemets et ça l'a pas compté je crois ^^
Partager