1

visible = 0以下のクエリ結果にないという条件で、カテゴリテーブルの行を検索できるようにしたい:

SELECT c.id as cat_id, j.id
FROM category c
LEFT JOIN portfolio_job_category pjc
ON pjc.category_id = c.id
LEFT JOIN job j
ON j.id = pjc.job_id
WHERE c.visible = 0
AND j.end_date > CURRENT_DATE
GROUP BY c.id

NOT INこれを見つけるために使用する方法はありますか?

以下で試しましたが、これは永遠にループし、mysqld をクラッシュさせます

SELECT c.id
FROM category c
WHERE c.id NOT IN
(SELECT c.id as cat_id, j.id
FROM category c
LEFT JOIN portfolio_job_category pjc
ON pjc.category_id = c.id
LEFT JOIN job j
ON j.id = pjc.job_id
WHERE c.visible = 0
AND j.end_date > CURRENT_DATE
GROUP BY c.id)
AND visible = 0
4

1 に答える 1

0

何を使ってみませんかLEFT JOIN

SELECT  a.ID
FROM    category a
        LEFT JOIN
        (
            SELECT  c.id as cat_id
            FROM    category c
                    LEFT JOIN portfolio_job_category pjc
                        ON pjc.category_id = c.id
                    LEFT JOIN job j
                        ON j.id = pjc.job_id
            WHERE   c.visible = 0 AND 
                    j.end_date > CURRENT_DATE
        ) b ON a.ID = b.ID
WHERE   b.ID IS NULL AND
        a.visible = 0
于 2013-01-22T03:21:03.157 に答える