PHP / MySQL - Bazı satır adı ile, çeşitli tablolar SEÇİMİ

2 Cevap php

Hangi çeşitli tablodan * seçmek için en iyi yaklaşımı olan ama aynı satır isimde, neden normal i $ row ['name'] kullanabilirsiniz ama bazı adıyla yedi tablolar var ... ben bunu nasıl yapabilirim?

tkz Roberto

2 Cevap

Sen sorguyu kullanabilirsiniz

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

Sonra

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

Sen açıkça yerine yapmanın sütun adlarını belirtmek gerekir SELECT *. Burada bazı çelişkili isimlere sahip iki tablodan sonuçlarını döndürmek için takma adlar kullanmak istiyorum nasıl:

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

Genel olarak SELECT ifadelerinde wildcard kullanmak kötü bir uygulamadır. Tabii, önce bazı kod yazarken kendinize bir kaç dakika kaydedebilirsiniz, ancak ayak kendinizi çekim olabilir Eğer ileride veritabanı şemasını değiştirmek eğer / ne zaman. Ayrıca muhtemelen gerçekten ihtiyacınız daha fazla veri dönüyoruz.

Eğer aynı alan adları ile birkaç tablo varsa ve sorgu otomatikleştirmek istiyorsanız, burada bir olasılık:

$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 ...";