Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица
id | str | ind
---------------
1 | str1 | 0
2 | str1 | 0
3 | str1 | 2
4 | str2 | 0
5 | str3 | 0
6 | str1 | 4
Нужно получить строки в одном запросе
1. Все строки, у которых str='str1' && ind=0
2. Строки, у которых str='str1' && ind>0, но при условии что этот ind равен строке с таким же id, у которой str!='str1'
То есть мне нужно получить следущее
Из первого условия:
1 | str1 | 0
2 | str1 | 0
Из второго условия:
6 | str1 | 4
Похоже что это не реально!? Может хоть идеи какие-нибудь есть? HELP
Неактивен
"...но при условии что этот ind равен строке с таким же id"
ничего нет понял
Неактивен
Второе условие:
Мне нужна строка X, у которой str='str1' && ind>0. НО при условии, что есть в таблице строка Y, у которой id будет равен ind строки X и при этом str строки Y != 'str1'
Неактивен
Оно?
mysql> create table t_4920(id int, str varchar(80), ind int); Query OK, 0 rows affected (0.00 sec) mysql> insert into t_4920 values(1,'str1',0),(2,'str1',0),(3,'str1',2),(4,'str2',0),(5,'str3',0),(6,'str1',4); Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> select * from t_4920 t where t.str='str1' and ( (t.ind > 0 and exists(select * from t_4920 where id=t.ind and str<>'str1') ) or t.ind=0 ); +------+------+------+ | id | str | ind | +------+------+------+ | 1 | str1 | 0 | | 2 | str1 | 0 | | 6 | str1 | 4 | +------+------+------+ 3 rows in set (0.00 sec)
Неактивен
deadka написал:
Оно?
Буду пробовать. Надеюсь что оно. Спасибо за помощь
А можно еще усложнить запрос таким условием:
есть в базе еще строки
7 | str1 | 4
8 | str1 | 4
Но мне нужно только первую попавшуюся, т.е. c id=6, а 7 и 8 пропустить?
Такое возможно?
Неактивен
Усложнение возможно, если с limit поиграться:
Отредактированно deadka (09.11.2011 02:10:24)
Неактивен