0

edum_application、edua_courseEvent、edua_coursePackageという3つのテーブルがあります。

すべてのcourseEventのcoursePackage_idがxであり、すべてが同じapplicationWrapper_idを持つedum_applicationからすべてのアプリケーションを取得するための質問を書いています。

このクエリは機能しますが、効率的ですか?

SELECT app.application_id, app.applicationWrapper_id
FROM edum_application AS app
    INNER JOIN edua_courseEvent AS ce ON app.courseEvent_id = ce.courseEvent_id
WHERE app.applicationWrapper_id = 662
    AND app.courseEvent_id IN
    (
        -- Is this really efficient?
        SELECT ce.courseEvent_id
        FROM edua_courseEvent AS ce
        WHERE ce.coursePackage_id =
        (
            SELECT coursePackage_id
            FROM edua_courseEvent AS ce
            WHERE ce.courseEvent_id = 13377
        )
    )

出力:

application_id  applicationWrapper_id
72643           662
72645           662
72646           662
72647           662
4

1 に答える 1

1

これを試して:

SELECT     app.application_id, app.applicationWrapper_id
FROM       edum_application AS app
INNER JOIN edua_courseEvent AS ce
ON         app.courseEvent_id = ce.courseEvent_id
INNER JOIN edua_courseEvent AS ce2
ON         ce.coursePackage_id = ce2.coursePackage_id
WHERE      app.applicationWrapper_id = 662
AND        ce2.courseEvent_id = 13377

異なるテーブル間の関係の行数によっては、DISTINCT が必要になる場合があります。

于 2012-06-27T07:11:01.243 に答える