SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.11.2011 22:51:36

VBlond
Участник
Зарегистрирован: 23.10.2011
Сообщений: 7

Записи одной таблицы без соответствии в другой (говоря языком множеств: A\B)

Здравствуйте!
Есть две таблицы: albums и songs.
В таблице songs имеется поле album, которое по умолчанию принимает значение 0, а вообще соответствует albums.id.

Необходимо выбрать из albums такие записи, для которых не будет эквивалентно albums.id=songs.album.
Говоря языком множеств, выбрать красную зону:
http://upload.wikimedia.org/wikipedia/commons/e/e6/Venn0100.svg

Пробовал запросы вида:
SELECT B.id FROM B LEFT JOIN A ON (B.id=A.id) WHERE A.id IS NULL;
и
SELECT b.id FROM b WHERE b.id NOT IN (SELECT a.id FROM a)
но они не срабатывают, только подвешивают phpMyAdmin (используется для проверки запроса).

Буду крайне признателен за помощь!

Неактивен

 

#2 09.11.2011 01:54:32

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Записи одной таблицы без соответствии в другой (говоря языком множеств: A\B)

Подвесить такие запросы phpMyAdmin не должны, думаю, они просто долго отрабатываются.
Сколько данных в таблицах? Для большей скорости выполнения таких запросов добавьте ключи на поля A.id и B.id.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 09.11.2011 07:46:09

VBlond
Участник
Зарегистрирован: 23.10.2011
Сообщений: 7

Re: Записи одной таблицы без соответствии в другой (говоря языком множеств: A\B)

Добавил индекс для songs.album (в таблице ~110k записей) и всё заработало!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson