0

次のようなSQLを使用してテーブルに内部結合したいと思います。

$check_unscored =   "select * from [user]

            INNER JOIN [tenderrc]
            on [user].[id] = [tenderrc].[userid]";

$result_unscored = mssql_query($check_unscored, $s);

while ($record_unscored = mssql_fetch_array($result_unscored))
{
$id = $record_unscored['id'];
$name = $record_unscored['name'];   
$userid = $record_unscored['userid'];   
$touser = $record_unscored['touser'];

$id = $record_unscored['id'];
$username = $record_unscored['username'];   
$password = $record_unscored['password'];
}

「id」というキー名の列が両方のテーブルに存在することを確認しました。したがって、$ id = $ record_unscored ['id']; 上書きされます。

$ id = $record_unscored['user.id'];を試しました しかし、それは機能していません!実際、テーブル名もどのように指定すればよいですか?

4

3 に答える 3

1

ユーザーからIDを取得しない場合は、エイリアスフィールドなどを作成できます。select[user]。[id] as'userid'、[tenderrc]。[*] from ...私はmySqlの世界から来ましたが、私はこの方法で管理可能であると考え、後でこの方法でアクセスします$ id = $ record_unscored ['userid'];

于 2012-04-27T09:22:03.537 に答える
1

エイリアスを使用する:

$check_unscored =   "
       SELECT 
           u.id
         , u.name 
         , u.userid
         , u.touser
         , t.id          AS tender_id              --- column alias
                                                   --- to remove duplicate names
         , t.username 
         , t.password
        FROM [user]   AS u                         --- table alias her
            INNER JOIN [tenderrc]   AS t           --- and here
                ON  u.[id] = t.[userid]
                    ";
于 2012-04-27T09:22:40.003 に答える
0

この関数を使用してこれを行うことができます

http://hu2.php.net/manual/en/function.mssql-fetch-field.php

これは、「column_source-列が取得されたテーブル」を提供できます。

コード例:

$result = mssql_query("....");
$check_unscored = "
  SELECT *
  FROM       [user]
  INNER JOIN [tenderrc] ON [user].[id] = [tenderrc].[userid]";
$rows = fetch_multitable( mssql_query( $check_unscored, $s ));

foreach( $rows as $row ){
  echo $row->user['id'];
  echo $row->tenderrc['id'];
}

function fetch_multitable( $result ){
  $fields = mssql_num_fields( $result );
  $infos = array();
  for( $i=0; $i < $fields; $i++ ){
    $fieldinfo = mssql_fetch_field( $r, $i );
    $infos[ $i ] = (object)array(
      'table'=> $fieldinfo -> column_source
     ,'name' => $fieldinfo -> name
    );
  }

  $rows = array();
  while( $raw = mssql_fetch_row( $r )){
    $row = array();
    foreach( $raw as $i => $v ){
      $info = $infos[ $i ];
      $row[ $inf->table ][ $inf->name ] = $v;
    }
    $rows[] = (object)$row;
  }
  return $rows;
}
于 2012-04-27T09:20:50.253 に答える