PHP / MySQL - 选择各种表,带有一些行名

时间:2009-09-09 17:36:35

标签: php sql mysql

哪个是从各种表中选择*但具有相同行名的最佳方法,因为通常我使用$ row ['name']但我有七个表有一些名称...我怎么能这样做? / p>

TKZ 罗伯特

2 个答案:

答案 0 :(得分:0)

您需要明确指定列名而不是SELECT *。以下是如何使用别名从两个具有一些冲突名称的表中返回结果:

SELECT students.id AS student_id, students.name AS student_name, teachers.id AS teacher_id, teachers.name AS teacher_name FROM students, teachers

通常,在SELECT语句中使用通配符是不好的做法。当然,当你第一次编写代码时,你可以节省几分钟,但是如果/将来你改变数据库模式,你可能会自己开枪。您也可能返回的数据超出了您的实际需求。

如果您有多个具有相同字段名称的表,并且您希望自动执行查询,则可能存在以下一种情况:

$tables = array('table1', 'table2', 'table3', 'table4');
$fields = array('field1', 'field2', 'field3', 'field4');
$select = '';
$from = '';
foreach ($tables as $table) {
  if ($from) $from .= ', ';
  $from .= $table;
  foreach ($fields as $field) {
    if ($select) $select .= ', ';
    $select .= "$table.$field as {$table}_{$field}";
  }
}
$sql = "SELECT $select FROM $from WHERE ...";

答案 1 :(得分:0)

您可以使用查询

SELECT t1.name AS t1_name, t2.name AS t2_name
FROM table1 t1
INNER JOIN table t2 ON ....

然后

$row['t1_name']
$row['t2_name']