Karmaşık SQL sorgusu ...

1 Cevap php

Ne Eminim çoğunuz için bir temel soru, ama ben ayrı tablolar birbiri ile aynı adı taşıyan ve aynı sorguda iki tablodan seçmek için çalışırken tablo sütunları ile bir sorunu var için beni bağışlayın.

Tamam, bu benim kod:

$q_value = $mdb2->quote($_POST['query']);
$field = $_POST['field'];
$sql = "SELECT m.*, l.name FROM memberlist m, mail_lists l
        WHERE m.$field=$q_value
        AND l.id = m.list
        ORDER BY m.id";
$l_list = $mdb2->queryAll($sql, '', 'MDB2_FETCHMODE_ASSOC');

The table memberlist has the following columns: id, email, list, sex, name

and the table mail_lists has the following columns: id, name

Bunun gibi bir foreach ile sonuçları ile sorgu, daha sonra döngü çalıştırdıktan sonra:

foreach ($l_list as $l){ //blahblah }

Sorun üyeler arasındaki sütun 'name' üyesi adına başvuruyor ise mail_lists sütun 'name', listenin isimleri ifade etmesidir.

(Foreach içinde) Ben geç erişim $ l-> name, ben m.name veya l.name alacak? Ayrıca, nasıl diğer erişim alabilirim?

Veya sadece iki ayrı sorgu yapmak zorunda kalacak?

1 Cevap

Neden sadece kullanamazsınız:

SELECT m.*, l.name as l_name FROM ...

ve name ve l_name ayırt?


Ve diğerleri katılmıyorum bu yüzden, tarz meselesi ama ben never açık sütun spesifikasyonları tercih eğilimi, sorgularda * kullanın. Yani aslında yapmak istiyorsa daha başka sizin durumunuzda bir sorun değil:

SELECT m.*, l.* FROM ...

ve yine iki isim arasındaki ayrım. Açık sütun özellikleri ile, daha sonra benzersiz adlar vermek için her bir sütun için bir as tümcesi ekleyebilirsiniz.