Помогите с запросом?

REMO

Guest
Помогите с запросом?

Таблица

id | code

И id и код товара может повторяться... (это таблица связка многие ко многим)

Как выбрать id, которые имеют и товар А, и товар B...

Мое творчество:

SELECT id
FROM table
WHERE code = 1001 || code = 1002
GROUP BY id

Но что то не получается... К вечеру башака не варит уже (
 

Falc

Новичок
SELECT *
FROM table t1
JOIN table t2 ON t1.id = t2.id
WHERE t1.code = 1001 AND t2.code = 1002
 

REMO

Guest
Т.е. идея в том, чтобы объединить таблицу с самой сабой?

А если мне надо найти id's, у которых есть 10 товаров одновременно, а не 2, что тогда...

Просто мне надо сделать поиск с логическим условием "и" и "или". С "или" понятно как сделать. А вот "и" я не пойму как сделать?
 

Falc

Новичок
REMO
Опиши подробно структуру и что тебе надо найти.
 

REMO

Guest
Автор оригинала: Falc
REMO
Опиши подробно структуру и что тебе надо найти.
Ок

Таблица: id | code <- таблица связка многие ко многим

Нужно осуществить поиск с логическим условием "и". Т.е. найти id которые обладают code и "A" и "B" и "С"... условий может быть несколько до 20 скажем.

Вроде подробно. Если что то не доописал, уточни...
 

Falc

Новичок
REMO
SELECT id, COUNT(*) AS cnt
FROM table
WHERE code = IN ( A, B, C )
GROUP BY id
HAVING cnt=3
 

REMO

Guest
Автор оригинала: Falc
REMO
SELECT id, COUNT(*) AS cnt
FROM table
WHERE code = IN ( A, B, C )
GROUP BY id
HAVING cnt=3
говорит не валидный мускул резалт, все проверил несколько раз... :(
 

Falc

Новичок
SELECT id, COUNT(*) AS cnt
FROM table
WHERE code IN ( A, B, C )
GROUP BY id
HAVING cnt=3
 

REMO

Guest
Автор оригинала: Falc
SELECT id, COUNT(*) AS cnt
FROM table
WHERE code IN ( A, B, C )
GROUP BY id
HAVING cnt=3
Ура, заработала )) Tanx, Falc!!!

Но у меня еще один вопрос, как это теперь скрестить с другой таблицей? В другой таблице есть признак (принимает значение 0 или 1). Нужно чтобы он находил id в таблице связке только такие, у которых признак в другой таблице ==1.

SELECT id, COUNT(*) AS cnt
FROM table, table2
WHERE code IN ( A, B, C ) AND table2.priznak = 1
GROUP BY id
HAVING cnt=3

не хочет так, выдает 0 результатов?
 
Сверху