quick icon indicating copy to clipboard operation
quick copied to clipboard

.from in .whereIn subquery incorrectly results in parent entity table

Open MordantWastrel opened this issue 1 year ago • 0 comments

The following Quick scope is producing an erroneous table prefix for the 'where in' clause.


     function scopeNotInCloneQueue( query, required string seasonUID ) {
                return query.whereNotIn( "registrationID", function( sQ ) {
                        sQ.from( "registration_clone_queue" )
                                .select( "registrationID" )
                                .join(
                                        "registration_clone_queue_batches",
                                        "registration_clone_queue.batchID",
                                        "=",
                                        "registration_clone_queue_batches.batchID"
                                )
                                .whereTargetSeasonUID( seasonUID )
                } );
        }

What did you expect to happen?

The subquery should be selecting registrationID from registration_clone_queue.

What actually happened instead?

The SQL produced was to SELECT registrationID FROM registrations (the table of the parent entity where the scope lives). registrationID is the primary key.

A workaround is to specify an alias in the from clause and refer to the registraitonID explicitly with the table prefix.

Environment

List the software versions you're using:

  • Quick: 7.3.1 / Lucee 5

MordantWastrel avatar Feb 28 '24 14:02 MordantWastrel