2012-05-11 13 views
0

私は、単純なJOINのクエリがあります。設定変数

$lstCheck = $dbWHMCS->query('SELECT * FROM tblmonitorports mp 
          INNER JOIN tblmonitorhosts h ON h.hst_id = port_mon 
          INNER JOIN tblhosting ho ON ho.id = h.hst_serverid 
          INNER JOIN tblclients cl ON cl.id = ho.userid'); 

while ($data = $lstCheck->fetch()) 
{ 
      $serveridx = $data['ho.id']; 
      $clientid = $data['cl.id']; 
} 

私の問題は、私は、そう私の変数の両方に同じを持っているのtblhostingとtblclients両方のテーブルの「ID」列を持っているということですがid。私は上記の例では別名を使用して設定しようとしましたが(hoとcl)、動作しません。上記の例でこれを行うにはどうすればよいですか?

ありがとうございました!

答えて

1

これはいかがですか? (PHPの詳細に少しさびが、これはそれを行う必要があります):


$lstCheck = $dbWHMCS->query('SELECT ho.id hid, cl.id cid FROM tblmonitorports mp 
          INNER JOIN tblmonitorhosts h ON h.hst_id = port_mon 
          INNER JOIN tblhosting ho ON ho.id = h.hst_serverid 
          INNER JOIN tblclients cl ON cl.id = ho.userid'); 

while ($data = $lstCheck->fetch()) 
{ 
      $serveridx = $data['hid']; 
      $clientid = $data['cid']; 
} 
+0

おかげミルコ、私が使用していますが、この場合と最も可能性の高い作業*を行いますページ! – Sherif

+0

これは痛みを伴うことがありますが、いくつの列があるかにかかわらず、すべての列をとにかく含めることが一般的にベストプラクティスです。私もホントにホッとするようなことができますが、すべてのホー欄を含めることができますが、私は単一の列に別名を付けることはできません。 – Mirko

+0

ありがとう、私はそれをやろうと思う! – Sherif

1

あなたはワイルドカード*で、レコードを選択しているので、あなたがそのようなフィールドを選択することはできません。

クエリごとにh.hst_serverid & ho.useridは、まったく同じ値を持っています。私は残りの40以上の列を使用していますので、SO単にこの

while ($data = $lstCheck->fetch()) 
{ 
      $serveridx = $data['hst_serverid']; 
      $clientid = $data['userid']; 
} 

しかし、特定の行を選択すると、あまりにも良く聞こえるかもしれない

$lstCheck = $dbWHMCS->query('SELECT ho.id hid, cl.id cid, ....'); 

while ($data = $lstCheck->fetch()) 
{ 
      $serveridx = $data['hid']; 
      $clientid = $data['cid']; 
}