我有两张桌子:
t_orderPayment with n_id,n_order,n_paytype AND
t_paytype with n_ID , str_desc
我的查询是:
SELECT t_OrderPayment.n_order ,
t_OrderPayment.n_paytype = (select t_paytype.str_desc as n_paytype from t_PayType, t_orderpayment where t_OrderPayment.n_PayType = t_PayType.n_ID)
FROM t_OrderPayment
WHERE (((t_OrderPayment.n_PaymentStatus)<>-7)) ;
它返回错误
“此子查询最多可以返回一条记录”
我尝试将其设置为MAX和TOP 1,如n_paytype =(选择max(t_paytype.str_desc)但显示错误Expr1001 Str.desc只有文本值,这可能是原因。可能是INNER JOIN可以帮助我吗?
答案 0 :(得分:1)
看起来你不小心做了一个交叉连接。您不需要对子查询中的SELECT t_OrderPayment.n_order,
t_paytype.str_desc AS n_paytype
FROM t_OrderPayment
INNER JOIN t_PayType
ON t_OrderPayment.n_PayType = t_PayType.n_ID
WHERE t_OrderPayment.n_PaymentStatus <> -7;
表进行第二次引用 - 尝试删除它(但将where子句保留为将其链接到外部查询的内容)。看起来整个子查询可以删除并转换为连接,但是......
package com.motowala.AfterLogin;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.acs.R;
public class MapDialogFragment extends Fragment implements OnMapReadyCallback {
View v;
MapView googleMapView;
GoogleMap googleMap;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.google_map_fragment, container, false);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
googleMapView=(MapView)v.findViewById(R.id.google_map_view);
googleMapView.onCreate(null);
googleMapView.onResume();
googleMapView.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
MapsInitializer.initialize(getActivity());
this.googleMap=googleMap;
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.addMarker(new MarkerOptions().position(new LatLng(16,80)));
}
}
答案 1 :(得分:0)
SELECT t_OrderPayment.n_order, t_paytype.str_desc AS n_paytype FROM t_OrderPayment,t_PayType WHERE_OrderPayment.n_PayType = t_PayType.n_ID AND t_OrderPayment.n_PaymentStatus&lt;&gt; -7;