Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Помогите, пожалуйста, составить вопрос. Честно, у самого никаких идей не появилось.
Имеется таблица:
Отредактированно FiMko (18.03.2012 21:11:53)
Неактивен
Неактивен
vasya написал:
select id1 from table1 where id2=100 or id2=102 group by id1 having count(*)=2;
Великолепно! Большое спасибо!
Неактивен
vasya написал:
select id1 from table1 where id2=100 or id2=102 group by id1 having count(*)=2;
Но если в таблице table1 есть еще одна строка id1=3, id2=100, тогда id1=3 вернется также по этому запросу (результирующее множество: id1 = 1, 2, 3). От таких случаев можно как-то "защититься"?
---
Добавлено:
Может что-то вроде:
Отредактированно FiMko (06.06.2013 21:09:23)
Неактивен
FiMko написал:
Может что-то вроде:
select id1 from table1 where id2=100 or id2=102 group by id1 having count(distinct id2)=2;
Нет, не пойдет, ибо необходимо чтобы согласно запросу выполнялось условие "дай мне все id1 в соответствие которым есть id2 равное 100 И 102 не важно в каком количестве".
Так для таблицы:
Отредактированно FiMko (18.03.2012 22:48:56)
Неактивен
FiMko написал:
Нет, не пойдет, ибо необходимо чтобы согласно запросу выполнялось условие "дай мне все id1 в соответствие которым есть id2 равное 100 И 102 не важно в каком количестве".
У меня родилось только уродливое:
Отредактированно FiMko (18.03.2012 23:08:32)
Неактивен
FiMko написал:
FiMko написал:
Может что-то вроде:
select id1 from table1 where id2=100 or id2=102 group by id1 having count(distinct id2)=2;Нет, не пойдет, ибо необходимо чтобы согласно запросу выполнялось условие "дай мне все id1 в соответствие которым есть id2 равное 100 И 102 не важно в каком количестве".
Так для таблицы:mysql> select * from table1;
+-----+-----+
| id1 | id2 |
+-----+-----+
| 1 | 100 |
| 1 | 102 |
| 2 | 100 |
| 2 | 101 |
| 2 | 102 |
| 2 | 102 |
| 3 | 100 |
| 3 | 100 |
| 3 | 105 |
+-----+-----+
Должно вернуться id1=1 (есть и id2=100 и id2=102) и id1=2 (есть и id2=100 и id2=102, причем id2=102 встречается даже дважды), но не id1=3 (у него нет id2=102!).
Вы сами ответили на вопрос.
Неактивен
vasya написал:
Вы сами ответили на вопрос.
select id1 from table1 where id2=100 or id2=102 group by id1 having count(distinct id2)=2;Вернет именно то, что нужно, т.е. "все id1 в соответствие которым есть id2 равное 100 И 102 не важно в каком количестве"
Ммм... засиделся я видать, пора передохнуть Спасибо!
Неактивен