0

私は以下を機能させるのに苦労しています:

# prev
SELECT klha.buyerID < PARAMETER_1

    FROM agents AS v

    LEFT JOIN seller_authorized AS klhs 
        ON klhs.agent= v.agentID 
        AND klhs.iln = v.seller
        AND v.`status` = 'auth'

    LEFT JOIN cust_list AS klha 
        ON klha.buyerID  = klhs.userID
        AND klha.accountNo = klhs.accountNo
        WHERE v.iln = PARAMETER_2
        AND klhs.acccountNo IS NOT NULL

    ORDER BY klha.buyerID 
    LIMIT 1 
;

終わり

左の結合は、別の手順でそれらを使用してすべての関連レコードを選択しているため、機能しています。問題は、前のレコードを選択しようとする試みにあります。

購入者IDを渡しているので、前のレコードの ID を取得する必要があります。

質問:
誰でも正しい構文を教えてもらえますか?

編集:
これをMySQLで実行すると、結果セットとして「0」が得られます

ありがとう!

解決策:次
のように動作するようになりました:

# prev
SELECT klha.buyerID

    FROM agents AS v

    LEFT JOIN seller_authorized AS klhs 
        ON klhs.agent= v.agentID 
        AND klhs.iln = v.seller
        AND v.`status` = 'auth'

    LEFT JOIN cust_list AS klha 
        ON klha.buyerID  = klhs.userID
        AND klha.accountNo = klhs.accountNo
        WHERE v.iln = PARAMETER_2
        AND klhs.acccountNo IS NOT NULL
        AND klha.buyerID < PARAMETER_1

    ORDER BY klha.buyerID 
    LIMIT 1 
;

思ったより簡単です:-)ありがとう@Henrique Ordine

4

1 に答える 1

1

必要なものを正しく理解していれば、この条件を where 句に追加するとうまくいくはずです。

klha.buyerID = (buyerID < PARAMETER_1 のエージェントから max(buyerID) を選択)

このような:

SELECT klha.buyerID 

    FROM agents AS v

    LEFT JOIN seller_authorized AS klhs 
        ON klhs.agent= v.agentID 
        AND klhs.iln = v.seller
        AND v.`status` = 'auth'

    LEFT JOIN cust_list AS klha 
        ON klha.buyerID  = klhs.userID
        AND klha.accountNo = klhs.accountNo
    WHERE v.iln = PARAMETER_2
      AND klhs.acccountNo IS NOT NULL
      and klha.buyerID = (select max(buyerID) from agents 
                            where buyerID < PARAMETER_1)

    ORDER BY klha.buyerID 
    LIMIT 1 
于 2012-06-24T07:25:17.140 に答える