0

変数を使用して特定のIDの行数をカウントしようとしていますが、内部結合なしで使用すると完全に機能します。それ以外の場合は、結合なしのセクションです。

    select
                            cd.basis_point bpt,
                            cd.created,
                            @version:=@version+1 version
                        from tbl_class_det cd, (select @version:=1) v
                        where (cd.class_uuid='{$row['uuid']}')
                        and (cd.created>(
                                                        select
                                                            created
                                                        from tbl_class_det
                                                        where (class_uuid=cd.class_uuid)
                                                        order by created asc
                                                        limit 1
                                                    ))
                        order by cd.created asc

エラーが発生する結合のあるセクション:

    select c.name,
                            fd.value bpt,
                            fd.created,
                            @version:=@version+1 version
                        from tbl_fee_det fd, (select @version:=1) v
                            INNER JOIN tbl_fee f ON f.uuid = fd.fee_uuid
                            INNER JOIN tbl_class c ON c.uuid = f.class_uuid
                        where (fd.created>(
                                                        select
                                                            created
                                                        from tbl_class_det
                                                        where (fee_uuid=f.uuid)
                                                        order by created asc
                                                        limit 1
                                                    ))
                        order by fd.created asc;
4

1 に答える 1

1

明示的結合と暗黙的結合の組み合わせを使用しています。JOIN構文とコンマ構文を混在させないでください。これが必要な場合は、次のようなサブクエリを使用します。

select name,
    value bpt,
    created,
    @version:=@version+1 version
from
(
    select c.name,
        fd.value,
        fd.created,
        f.uuid
    FROM tbl_fee_det fd
    INNER JOIN tbl_fee f 
        ON f.uuid = fd.fee_uuid
    INNER JOIN tbl_class c 
        ON c.uuid = f.class_uuid
) f, (select @version:=1) v
where (created>(select created
                   from tbl_class_det
                   where (fee_uuid=f.uuid)
                   order by created asc
                   limit 1))
order by created asc;
于 2013-01-16T15:57:08.803 に答える