簡體   English   中英

合並兩個SQL查詢的結果

[英]Combine the results of two SQL queries

我該如何在SQL或PHP中組合這兩個sql查詢的結果..它們都涉及聯接..我想將它們組合並按orderid對其進行排序..我該怎么做?

第一個查詢

$sqlstr = "SELECT op.* FROM products_to_products_extra_fields AS p 
    INNER JOIN orders_roster AS r ON p.products_id = r.products_id 
    INNER JOIN orders_products AS op ON r.orders_id = op.orders_id
    INNER JOIN orders AS o on op.orders_id = o.orders_id
    WHERE p.products_extra_fields_id = 14
      AND p.products_extra_fields_value between '" 
         . tep_db_input($startdate) . "' and '" 
         . tep_db_input($enddate) . " 23:59:59'
      AND r.roster_status != 'Removed'
      AND o.payment_method = 'Institutional Billing'
      AND o.orders_status < 100001
    GROUP BY o.orders_id
    ORDER BY DECODE(o.cc_type, '$salt') ASC";  

第二查詢

$sqlstr2 = "SELECT op.* FROM products_to_products_extra_fields AS p 
    INNER JOIN orders_products AS op ON p.products_id = op.products_id 
    INNER JOIN orders AS o on op.orders_id = o.orders_id
    WHERE p.products_id IN 
      (SELECT products_id 
        FROM products_to_products_extra_fields 
        WHERE p.products_id NOT IN 
          (SELECT products_id 
           FROM products_to_products_extra_fields 
           WHERE products_extra_fields_id = 14)
      )
      AND o.date_purchased between '" 
         . tep_db_input($startdate) . "' and '" 
         . tep_db_input($enddate) . " 23:59:59'
      AND o.payment_method = 'Institutional Billing'
      AND o.orders_status < 100001
    GROUP BY o.orders_id
    ORDER BY DECODE(o.cc_type, '$salt') ASC";  

如果您需要在PHP端將它們組合在一起,我將假設您剩下一個數組數組(MySQL行),您可以簡單地遍歷兩組結果並使用array_push將其推入第3個(完整)數組。 您也可以使用array_merge進行修改,但有時使用多維數組時,最終結果並非您所期望的。

http://us3.php.net/manual/zh/function.array-push.php http://us3.php.net/function.array-merge

只需進行一個UNION查詢並在SQL端合並結果即可。 無需PHP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM