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