Сложная выборка из таблицы

Статус
В этой теме нельзя размещать новые ответы.

gelous

Местный житель
Регистрация
11 Май 2007
Сообщения
215
Реакции
22
product_id category_id
53 58
53 61
53 64
53 71
123 34
123 36
123 38
128 58
128 60
128 64
128 71
152 1
152 71

Вот моя таблица. Мне нужны выбрать такие продукты, у которых есть category_id и 71 и 64. никак не получается. помогните плз ;-)
 
Код:
SELECT T.product_id FROM Table AS T
JOIN Table AS T1
ON T1.product_id = T.product_id
WHERE T.category_id = 71 AND T1.category_id = 64
 
отлично, работает! сам начал делать с джоинами, но както не очень получилось. если катеогрии будет 3 делать по аналогии?
 
Да, но имхо легче в скрипте задать какое количество джойнов вам понадобится для создания запроса. Определяете сколько категорий надо учесть и столько же раз в запросе должно встретиться JOIN, ну и количество параметров WHERE должно соответствовать.
 
шото вы мудрите
Код:
SELECT * FROM product WHERE product.id IN ( SELECT product_id FROM Table WHERE category_id IN (71,64) )
 
Почему мудрим? Много где пишут, что зачастую JOIN эффективнее подзапросов, хотя бывают исключения. Лучший вариант может быть определен по результатам выполнения EXPLAIN.
Что же касается запроса, то в условии было И 64 И 71. В запросе
Код:
SELECT product_id FROM Table WHERE category_id IN (71,64)
же восзвращаются строки у которых может совпасть только один из параметров. Это повлечет за собой неверную выборку во внешнем запросе. Плюс во вложенном подзапросе следовало добавить бы DISTINCT.
 
да ты прав
подзапросы mysql не так хорошо оптимизурует как join
но если пишется апликуха которой будут пользоваться пару раз в день и объем данных невелик то можно забить болт

Что же касается запроса, то в условии было И 64 И 71.
написал на скорую руку
 
Можно ещё так

SELECT product_id
FROM Table
group by product_id
having SUM( IF( category_id=64 and category_id=71, 1, 0) ) = 2
 
а помогите и мне sql запрос составить пожайлксто

задача такая
вот к примеру запрос
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, '<a href = "link1"> ', '');

этот запрос удалит <a href = "link1">
, а вот если мне надо удалить <a href = постоянно меняющийся текст> как сделать запрос???
 
встречный вопрос: а как вы потом удалите закрывающие тэги </a> от только что удаленных вами открывающих?
мне кажется проще вычитать такие посты в массив и пройтись по ним регуляркой
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху