选择内部选择不正常并显示错误

时间:2017-06-20 10:00:47

标签: sql

我有两张桌子:

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可以帮助我吗?

2 个答案:

答案 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;