2016-04-28 12 views
0

クエリの1つにフィールドを追加する必要があります。私はPHPプログラマーの買物ではありません少し私の道を得ることができます。クエリは次のとおりです。MySQLクエリでフィールドを追加する

if (_QUERYSTRING_) { 
    switch ($intMode) { 
     case -1: 
      $result = mysqli_query($mysql," 
      SELECT orders.id, 
        orders_addresses.strlastname, 
        orders_addresses.strfirstname, 
        orders_addresses.intprovince, 
        9 AS intmode, 
        Date(orders.dtimeorder) AS datepayment, 
        orders_costs.dbltotal AS dblamount, 
        orders_notes.strcod AS strtxn, 
        0 AS dblfee, 
        shipping_postalservices.strtracking"._LANG_." as strtrackingurl, 
        'À recevoir' AS strmode, 
        NULL AS strvendor 
      FROM  orders 
      JOIN  orders_costs 
      ON  orders_costs.id = orders.id 
      JOIN  orders_addresses 
      ON  orders_addresses.id = orders.id 
      JOIN  orders_notes 
      ON  orders_notes.id = orders.id 
      JOIN  shipping_postalservices 
      ON  shipping_postalservices.id = orders_costs.intpostalservice 
      WHERE date(orders.dtimeorder) BETWEEN '".date("Y-m-d",$timeStart)."' AND  '".date("Y-m-d",$timeEnd)."' 
      AND  orders.boolshipped = 1 
      AND  orders.boolcanceled = 0 
      AND  orders_costs.boolcod = 1 
      AND  orders_costs.dbltotal > 0 
      AND  NOT EXISTS 
        ( 
         SELECT * 
         FROM orders_payments 
         WHERE orders_payments.intorder = orders.id 
         AND orders_payments.intmode = 9 
         AND orders_payments.dblamount > 0) 
     GROUP BY orders.id 
     ORDER BY orders.dtimeorder, 
       orders.id"); 
      break; 
     default: 
      $result = mysqli_query($mysql," 
      SELECT orders.id, 
         orders_addresses.strlastname, 
         orders_addresses.strfirstname, 
         orders_addresses.intprovince, 
         orders_payments.intmode, 
         Date(orders_payments.dtimepayment) AS datepayment, 
         orders_payments.dblamount, 
         orders_payments.strtxn, 
         orders_payments.dblfee, 
         shipping_postalservices.strtracking"._LANG_." as strtrackingurl, 
         payments.strname"._LANG_." AS strmode, 
         payments.strvendor 
      FROM  orders_payments 
      JOIN  orders 
      ON  orders.id = orders_payments.intorder 
      JOIN  orders_costs 
      ON  orders_costs.id = orders.id 
      JOIN  orders_addresses 
      ON  orders_addresses.id = orders.id 
      JOIN  shipping_postalservices 
      ON  shipping_postalservices.id = orders_costs.intpostalservice 
      LEFT JOIN payments 
      ON  payments.id = orders_payments.intmode 
      WHERE  date(orders_payments.dtimepayment) BETWEEN '".date("Y-m-d",$timeStart)."' AND  '".date("Y-m-d",$timeEnd)."'".(!empty($intMode) ? " 
      AND  orders_payments.intmode = '".$intMode."'" : NULL)." 
      GROUP BY orders.id, 
         orders_payments.intpayment 
      ORDER BY orders_payments.dtimepayment, 
         orders.id"); 
      break; 
    } 

追加する必要があるフィールドはorders_addresses.intProvinceあるので、それが結果に表示することができます。私はちょっと理解しようとしましたが、思ったより少し複雑ですね。それは数字である州を表示します。私の質問は、実際の名前でそれらの数字を "翻訳"することで、9の代わりに "オンタリオ"を表示する方法です。州の名前はProvinceと呼ばれる別のテーブルにあります。

+0

... w帽子は問題ですか? – Mike

+0

@Mikeと合意してください - 現在のSELECTリストの最後とFROMの前に、それを(つまりorders_addresses.intProvinceをSomethingとして)追加してください。 – user3741598

+0

1行1文字ではなく、クエリの書式設定を試してください – Mike

答えて

0

あなたは他のJOINを追加する必要があります。

JOIN Province ON orders_addresses.intprovince = Province.x 

そしてSELECT部分​​には、州のIDを保持するテーブルの省でProvince.y

X =コラムでorders_addresses.intprovinceを交換
y =都道府県名を含む州の列

関連する問題