SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 18.06.2010 13:18:40

Борис Гаврилов
Участник
Зарегистрирован: 18.06.2010
Сообщений: 1

Поиск товаров у которых есть или отсутствуют дубликаты (Корректный запрос)

Здравствуйте!
Прошу о помощи в составлении корректного запроса.
Имеется одна таблица `products` в ней находятся товары, товары могут быть в разных категориях и также могут повторятся несколько раз(дублироваться со ссылкой на айди оригинального товара)

В ней есть поля:
`id` (id товара)
`category_id` (id категории)
`unique` (это ссылка на оригинальный товар, если товар оригинален, то ему присваивается значение 0, если товар является дубликатом, то в этом поле стоит значение поля `id` оригинала)
`name` (название товара)
..... (остальные поля типа цены и т.д.)

CREATE TABLE `products` (
`id` INT NOT NULL ,
`category_id` INT NOT NULL ,
`unique` INT NOT NULL ,
`name` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `category_id` , `unique` )
) ENGINE = MYISAM ;

Я хочу из базы в 5000 товаров найти те товары, у которых нету дубликатов, чтобы продублировать их в дополнительные категории, также я хочу видеть те товары, которые уже имеют копии.

Мои запросы либо неправильны либо очень медленны настолько, что выдаёт script_execution_time_exceeded

Вот код для поиска товаров с дубликатами (я привязываю таблицу товаров к самой себе), который работает неправильно:
SELECT `products` . * ,
`p2`.`id`
FROM `products`
LEFT JOIN `products` AS `p2` ON `p2`.`unique` = `products`.`id`
WHERE `p2`.`id`!=NULL

Второй вариант:
SELECT *, (@id:=`products`.id) AS `id` FROM `products` WHERE (SELECT `id` FROM `products` WHERE `unique`=@id)!=NULL


Сижу читаю мануалы и форумы, вижу фигу. Нужна помощь.
Заранее спасибо всем тем, кто откликнется!

Неактивен

 

#2 18.06.2010 14:06:04

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Поиск товаров у которых есть или отсутствуют дубликаты (Корректный запрос)

Для проверки является ли величина NULL, нужно использовать IS NULL, IS NOT NULL

WHERE `p2`.`id` IS NOT NULL

Неактивен

 

Board footer

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