在MySQL查询中添加字段

时间:2016-04-28 16:13:00

标签: php mysql

我需要在我们的一个查询中添加一个字段。我是一名PHP程序员,我可以稍微解决一下。查询是:

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,因此可以在结果中显示。我试着了解一点,但我想它比我想象的要复杂一点。它确实显示省份,这是数字。我的问题是,我如何"翻译"这些数字按实际名称显示,以显示" Ontario"而不是9?省份的名称位于另一个名为Province的表中。

1 个答案:

答案 0 :(得分:0)

您需要添加另一个JOIN:

<script language="vb" runat="server">
    Sub Render(sender As Object, e As EventArgs)
    TemplateHeader.Text = InitiatePage.GetHeader(sender, e, Request.FilePath)
...

在SELECT部分​​中,将JOIN Province ON orders_addresses.intprovince = Province.x 替换为orders_addresses.intprovince

,其中

x =表省的列,其中包含省份号
y =表省中包含省名

的列
相关问题