2016-11-24 40 views
-2

我尝试使用内部连接和工会工作不工会工作不空的结果

sql="SELECT * FROM " + 
     "(SELECT order_id, order_date, order_status, order_value, order_sapId, order_from, order_clientAcct, order_error, order_visitId, order_cancelled, distributor_name " + 
     " FROM `orders` " + 
     " JOIN visits on visit_id = order_visitId " + 
     " JOIN Name ON user_id = visit_userId " + 
     " JOIN distributor ON distributor_id = visit_outlet_id " + 
     " WHERE order_from = 'CSFA' AND user_id = '"+ App.getUserData("user_id")+"' " + 
     ")" + 
     " JOIN " + 
     "(SELECT order_id, order_date, order_status, order_value, order_sapId, order_from, order_clientAcct, order_error, order_visitId, order_cancelled, distributor_name " + 
     " FROM `orders` " + 
     " JOIN distributor ON order_clientAcct = distributor_accountName " + 
     " JOIN user ON salesEmpNo = user_sapId " + 
     " WHERE order_from = 'u' AND user_id = '"+ App.getUserData("user_id")+"' " + 
     ") " + 
     "" + 
     "ORDER BY order_id DESC LIMIT 100" + 
     ""; 

我需要一种方法来连接两个结果 1.尝试内部联接 2.tried工会

E/SQLiteLog:(1)near“(”:语法错误 11-24 19:53:01.017 13531-13531/E/AndroidRuntime:致命异常:主要 进程:,PID:13531 android.database.sqlite.SQLiteException :n ear“(”:syntax error(code 1):,while compiling:SELECT * FROM(SELECT order_id,order_date,order_status,order_value,order_sapId,order_from,order_clientAcct,order_error,order_visitId,order_cancelled,distributor_name FROM orders JOIN visit visit_id = order_visitId JOIN名称ON user_id = visit_userId JOIN分销商ON distributor_id = visit_outlet_id WHERE order_from ='CSFA'AND user_id ='75')UNION(SELECT order_id,order_date,order_status,order_value,order_sapId,order_from,order_clientAcct,order_error,order_visitId,order_cancelled,distributor_name FROM orders JOIN分配器ON order_clientAcct = distributor_accountName JOIN用户ON salesEmpNo = user_sapId WHERE order_from = 'u' 和USER_ID = '75')ORDER BY ORDER_ID DESC LIMIT 100

这是错误日志

+3

“不工作”照顾详细说明?错误讯息? –

+0

其sqlite检查语法附近(但工会之前, –

+0

JOIN和UNION做* *完全不同*的东西。你不能简单地随机SQL关键字填入您的查询,并期望它的工作。你完全省略了你的目标的描述,你的查询应该如何实现它,样本数据和期望的结果。 –

回答

0

经过几天的研究终于得到了答案。使用LEFT JOIN和OR仅从表中获取数据的位置匹配。


sql="" + 
     "SELECT DISTINCT order_id, order_date, order_status, order_value, order_sapId, order_from, order_clientAcct, order_error, order_visitId, order_cancelled, distributor_name " + 
     " FROM `orders` " + 
     " LEFT JOIN visits,user,distributor ON (visit_id = order_visitId AND user_id = visit_userId AND distributor_id = visit_outlet_id AND order_from = 'CSFA' AND user_id = '"+ App.getUserData("user_id")+"') OR " + 
     " " + 
     " (order_clientAcct = distributor_accountName AND salesEmpNo = user_sapId AND order_from = 'SAP' AND user_id = '"+ App.getUserData("user_id")+"')" + 
     " " + 
     "ORDER BY order_id DESC LIMIT 100" + 
     "";