-1

に奇妙な問題がありmysql_fetch_array( $result , MYSQL_BOTH )ます。これが問題の再現方法です。

  1. を使用するクエリ文字列を実行しますLEFT JOINGROUP BY
    select *, 
           (A1.total - A2.borrow_total) as remain_total 
      from ( select Min(sample_created_date) as created_date, 
             sample_model,
             sample_ncc, 
             count(*) as total , 
             sample_sort 
              from tb_sample 
             where 1=1 
               AND sample_kho IN ( 'hanoi','tm_hanoi' ) 
             group by sample_model, sample_sort, sample_ncc 
           ) A1 left join 
           ( select sample_model as sample_model1, 
                    count(*) as borrow_total, 
                    sample_ncc 
               from tb_sample B1 left join tb_sample_ticket B2 
                 on B1.sample_borrow_status = B2.ticket_id 
              where 1=1 
                and ticket_bo_phan_duyet = 'finish' 
                and ticket_status_duyet = '1' 
                AND sample_kho IN ( 'hanoi','tm_hanoi' ) 
              group by sample_model, sample_ncc 
            ) A2 on A1.sample_model = A2.sample_model1 
                AND A1.sample_ncc = A2.sample_ncc left join tb_product_sort A3 
                 on A1.sample_sort = A3.sort_code 
    where 1=1 
    order by created_date DESC 
    LIMIT 0, 30
  1. 実装mysql_fetch_array( $result , MYSQL_BOTH ):

    $rw  = mysql_fetch_array( $result , MYSQL_BOTH );
    
  2. の表示値$rw:

    echo  $rw['sample_cc'];
    

しかし、何もありません。次に、試してみprint_r( $rw )ます。結果については以下を参照してください。

Array
(
    [0] => 2013-06-13 04:10:39
    [created_date] => 2013-06-13 04:10:39
    [1] => 3G
    [sample_model] => 3G
    **[2] => Gmobile
    [sample_ncc] =>** 
    [3] => 1
    [total] => 1
    [4] => SIM
    [sample_sort] => SIM      
);

私はそれを参照して$Rw[2] = 3Gください$rw['sample_ncc'] is null

これは奇妙な問題です。私がそれを解決するのを手伝ってください。

4

1 に答える 1

0

サブクエリand (たとえばand ) のsample_ncc列に明示的なエイリアスを与えるか、 (in を意味する)の左側にあるものだけを返すようにしてください。A1A2sample_ncc_a1sample_ncc_a2LEFT JOINA1

于 2013-06-14T04:30:25.683 に答える