2012-04-27 63 views
0

我想内部连接到表与SQL这样的: -SQL书面方式格式

我认为,所谓的“ID”一键名称列存在于两个表,因此$ ID = $ record_unscored ['ID'];会被覆盖;

我试过$ id = $ record_unscored ['user.id'];但它不工作!其实我该怎么指定表名呢?

谢谢!

回答

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] 
        "; 
+1

...不要偷懒。 :) – 2012-04-27 10:39:42

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; 
} 
1

如果从用户惯于ID,你可以使用类似这样 选择[用户]你可以创建一个别名场等 [ID]为“用户ID”,[tenderrc。 [*] from ... 我来自mySql世界,但我认为它可以这样管理 和更高版本以这种方式访问​​它 $ id = $ record_unscored ['userid'];