у меня есть 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
А ты местами поменяй первую со второй таблицей.
А ты местами поменяй первую со второй таблицей.
Спустя 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Как мне удалить все записи из таблицы `attribute` где условие будет этот мой запрос?
*
FROM
`attribute`
LEFT JOIN
`product`
ON
`attribute`.`id_product` = `product`.`id`
WHERE
`product`.`id` IS NULL;
Спустя 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
Вот так пишет ошибку
You can't specify target table 'attribute' for update in FROM clause
Вот так пишет ошибку
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, потом подставь в запрос об удалении.
Хотя можно было бы решить с двойной вложенностью, но мне лень
Хотя можно было бы решить с двойной вложенностью, но мне лень
Спустя 3 минуты, 13 секунд (21.09.2011 - 12:16) maximka787 написал(а):
inpost
Ну я в принципе понял. У меня с этим слабовато. Примеры есть рабочие попробую разобраться. Тут вложенность и нужна. php пока не трогаем!
Ну я в принципе понял. У меня с этим слабовато. Примеры есть рабочие попробую разобраться. Тут вложенность и нужна. php пока не трогаем!
Спустя 5 часов, 55 минут, 39 секунд (21.09.2011 - 18:11) maximka787 написал(а):
СДЕЛАЛ САМ, ВСЕ ПРОСТО.
надо было заменить SELECT на DELETE и всё. никаких вложенных вторых подзапросов.
надо было заменить SELECT на DELETE и всё. никаких вложенных вторых подзапросов.
DELETE
`attribute`.*
FROM
`attribute`
LEFT JOIN
`product`
ON
`attribute`.`id_product` = `product`.`id`
WHERE
`product`.`id` IS NULL
_____________
..Работает - не трогай!