PHP / MySQL - ВЫБРАТЬ различные таблицы с некоторым именем строки - PullRequest
1 голос
/ 09 сентября 2009

Какой подход лучше выбрать * из различных таблиц, но с одинаковым именем строки, потому что обычно я использую $ row ['name'], но у меня есть семь таблиц с некоторым именем ... как я могу это сделать?

ТКЗ Roberto

Ответы [ 2 ]

0 голосов
/ 09 сентября 2009

Вы можете использовать запрос

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']
0 голосов
/ 09 сентября 2009

Вам нужно явно указать имена столбцов вместо того, чтобы делать 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 ...";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...