Задавайте вопросы, мы ответим
Вы не зашли.
Постараюсь обрисовать задачу
Есть 2 таблицы:
obiekt foto
-------------- ---------
categ | metka metka
1 | 1 1
1 | 2 1
1 | 3 1
2 | 4 2
2 | 5 2
2 | 6 2
3 | 7
3 | 8
3 | 9
как?
1) вывести все поля из таблицы obiekt где есть идентичная metka в таблице foto?
2) вывести все поля из таблицы obiekt где нет идентичной metka в таблице foto?
Отредактированно kuzroman (12.08.2010 10:47:11)
Неактивен
1)
SELECT * FROM obiekt INNER JOIN foto using(metka)
если надо прикрути GROUP BY object.metka
2.а)
SELECT * FROM obiekt WHERE metka NOT IN (SELECT metka FROM foto GROUP BY metka)
или
2.б)
SELECT * FROM obiekt LEFT JOIN foto using(metka) WHERE foto.metka IS NULL;
P.S.
Вопрос знатокам:
GROUP BY в 2.a) запросе помогает или мешает?
А какой вариант лучше?
Неактивен
Я бы сказал, что 2б лучше, т.к. он не подразумевает создание временной
таблицы. Что касается группировки — в случае наличия индекса на (metka)
она должна теоретически увеличить производительность, т.к. строк во вре-
менной таблице станет меньше — быстрее будет искать по ней без индекса.
Неактивен
@paulus
спасибо
Неактивен
vaspet
Вам спасибо! Все очень помогло!
Неактивен