выбор данных там где их нет

R00miss

Guest
выбор данных там где их нет

Привет!
такая ситуация - есть 3 таблицы:

poem
--------
poem_id | ... | ...

category
------------
category_id | ... | ...

poem_category
---------------------
poem_id | category_id

так что если poem лежит в какой то категории, оно идет в poem_category ... думаю это понятная структура...
итак вопрос - как лучше выбрать все из poem для которых нет данных в poem_category (т.е. категория не установлена) ?

сейчас делаю так:
----------------------------------
SELECT p.poem_id
FROM poem p
LEFT JOIN poem_category pc ON (pc.poem_id = p.poem_id)
GROUP BY p.poem_id
HAVING COUNT(pc.poem_id) < 1
-------------------------------------
пока база не большая (3000+ записей в poem), но соответственно в poem_category больше записей.. поэтому скрипту нада пройти через все записи в poem_category чтобы узнать чего там нет... долго это занимает ... как сделать? :)
 

alpine

Новичок
R00miss
[sql]
SELECT
p.poem_id
FROM poem p
LEFT JOIN poem_category pc ON (pc.poem_id = p.poem_id)
WHERE
pc.category_id IS NULL
[/sql]
 

R00miss

Guest
хех спасиб почти в 3 раза быстрее стало :)
 
Сверху