Выборка, со значением *(разрешено всё)

Yaponchick

Новичок
Выборка, со значением *(разрешено всё)

Здраствуйте.

desc `access`;
Код:
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI |         | auto_increment |
| user_name | varchar(255) | NO   |     |         |                |
| sid       | varchar(255) | YES  |     |         |                |
| tid       | varchar(255) | NO   |     |         |                |
+-----------+--------------+------+-----+---------+----------------+
select * from `access`;

Код:
+----+------------+------+-----+
| id | user_name  | sid  | tid |
+----+------------+------+-----+
| 1  | root       | *    | *   |
| 2  | phlebology | 1    | *   |
+----+------------+------+-----+
PHP:
SELECT `id`, `name` FROM `servers` WHERE `id` IN (SELECT `sid` FROM `access` WHERE `user_name` = '".$_SESSION['login']."') ORDER BY `id`;
Можно ли сделать так, что если в `access` в поле `sid` стояла '*', то выбрать всё из `servers` одним запросом.

i.e.: для root'a должны вывестись все сервера, а для phlebology только сервер с id

-~{}~ 27.07.06 18:08:

Никак ?!
 

Wicked

Новичок
голога не варит, но попробую:

1) попробуй заменить звездочки на %, и...
... where id like any (select `sid` ...) ...

2) еще можно переделать этот запрос под использование join'а с условием on (`servers`.`id` = `access`.`sid` OR `access`.`sid` = '*')

но с оптимизацией тут дела туговато :)
 

Yaponchick

Новичок
Wicked
Спасибо. Завтра на работе попробую вариант с лайком

Wicked
Еще раз спасибо большое, работает, правда без any

-~{}~ 28.07.06 10:45:

не работает при

Код:
+----+------------+-----+-----+
| id | user_name  | sid | tid |
+----+------------+-----+-----+
| 1  | root       | %   | %   |
| 2  | phlebology | 1   | %   |
| 3  | phlebology | 2   | %   |
+----+------------+-----+-----+
т.е. phlebology уже не фильтруется like-ом, т.к. 2 строки.

Wicked
JOIN решил проблему, спасиибо =)
 
Сверху