[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите дописать запрос
maximka787
ребят, помогите дописать, кто может. запрос очень простой.
у меня есть 2 таблцы
product: id, name.....
attribute: id, id_product, price,...
связь product.id и attribute.id_product

Вот я сделал вывод всех продуктов которые имеют атрибут во второй таблице
SELECT * FROM `product` INNER JOIN `attribute` ON `product`.`id` = `attribute`.`id_product`

Как мне найти все записи из второй таблицы (attrbute) не имеющих пары в первой, главной?



Спустя 4 минуты, 22 секунды (16.09.2011 - 14:52) maximka787 написал(а):
Я вот сделал, но он не работает
SELECT 
*
FROM
`product`
LEFT JOIN
`attribute`
ON
`attribute`.`id_product` = `product`.`id`
WHERE
`product`.`id` IS NULL;

Спустя 19 минут, 29 секунд (16.09.2011 - 15:11) inpost написал(а):
maximka787
А ты местами поменяй первую со второй таблицей. smile.gif

Спустя 5 минут, 35 секунд (16.09.2011 - 15:17) maximka787 написал(а):
inpost
хорошо)

Спустя 9 минут, 1 секунда (16.09.2011 - 15:26) vital написал(а):
RIGHT join еще можно)

Спустя 4 дня, 19 часов, 10 минут, 51 секунда (21.09.2011 - 10:37) maximka787 написал(а):
УРААА) ВСЕ РАБОТАЕТ. и еще подскажите как дописать его. все что получилось надо удалить теперь.
Вот запрос рабочий.
SELECT 
*
FROM
`attribute`
LEFT JOIN
`product`
ON
`attribute`.`id_product` = `product`.`id`
WHERE
`product`.`id` IS NULL;
Как мне удалить все записи из таблицы `attribute` где условие будет этот мой запрос?

Спустя 39 минут, 32 секунды (21.09.2011 - 11:16) inpost написал(а):
DELETE FROM `table` WHERE `id` IN (сюда твой запрос, только выборку не *, а `attribute`.`id`)

Спустя 37 минут, 35 секунд (21.09.2011 - 11:54) maximka787 написал(а):
inpost
Вот так пишет ошибку
DELETE FROM `attribute` WHERE `id` IN (

SELECT
`attribute`.`id`
FROM
`attribute`
LEFT JOIN
`product`
ON
`attribute`.`id_product` = `product`.`id`
WHERE
`product`.`id` IS NULL

)

You can't specify target table 'attribute' for update in FROM clause

Спустя 18 минут, 48 секунд (21.09.2011 - 12:13) inpost написал(а):
Ну тогда раздели запросы, первый выборкой того, что в скобках, потом возьми массив ID, потом подставь в запрос об удалении.

Хотя можно было бы решить с двойной вложенностью, но мне лень smile.gif

Спустя 3 минуты, 13 секунд (21.09.2011 - 12:16) maximka787 написал(а):
inpost
Ну я в принципе понял. У меня с этим слабовато. Примеры есть рабочие попробую разобраться. Тут вложенность и нужна. php пока не трогаем!

Спустя 5 часов, 55 минут, 39 секунд (21.09.2011 - 18:11) maximka787 написал(а):
СДЕЛАЛ САМ, ВСЕ ПРОСТО.
надо было заменить SELECT на DELETE и всё. никаких вложенных вторых подзапросов.
DELETE
`attribute`.*
FROM
`attribute`
LEFT JOIN
`product`
ON
`attribute`.`id_product` = `product`.`id`
WHERE
`product`.`id` IS NULL


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.