![]() |
вопрос про запрос в Mssql
как вывести в одну строчку данные из нескольких запросов:
тоесть я понимаю что можно так: Цитата:
PS запросы все одинаковые меняется только ID. спасибо. |
можно сделать так к примеру
Код:
select name from tabl where id=1 or id=2 or id=3 |
Цитата:
|
что именно тебе надо? если ты хочешь вывести все где разные ид то сделай
Цитата:
и насчет ид они ограничены или тебе нужны все? |
=) если все то
select name from tabl =) да поясни маску по которой должны выводиться запросы. |
Цитата:
|
нет вы непоняли вот посмотрите что делает запрос который я привел- он не выводит несколько рядов! он выводит один ряд. просто меня интересует можно ли както менее нагружать сервер чтоб вывести тиа того кк если б было select name from tabl where id=1 or id=2 or id=3 потом те записи которые выдает этот запрос пихались в одну строчку и выводились как результат.
|
Проще ты никак не сделаешь, чтобы менее нагружать базу и не делать кучу идентичных запросов, лучше сделать один а там его уже просто правильно обработать и подать ответ на экран в том виде каком надо, но обрабатывать нужно уже не средствами mssql.
|
Цитата:
|
Цитата:
ЗЫ: я чегото недопер как у тебя это работает Код:
select (select name from tabl where id=1)+(select name from tabl where id=2)+(select name from tabl where id=3) |
Цитата:
|
если тип name не int то конкатенация иначе как ты скзал сложение.
ну просто думал мож есть всетаки какаянить функция работы с такой фигней типа как с массивом. видимо нету ( |
Цитата:
Впринципе СУБД особого напряга от такого и нет, если мы говорим о стандартных СУБД работающих с жестким диском (а мы о них и говорим, так как mssql ей является :) ) а не о новомодных СУБД, в основном размещающих данные в оперативке :) А дело тут вот в чем. Основные временные затраты связаны с дисковыми операциями. При запросе какой-либо записи, эта запись ищется на диске, и считывается не одна эта запись а страница (обычно даже несколько страниц), которая размещается в оперативке (прим. Страницей называется минимальная порция данных, считываемых с диска за одну дисковую операцию. В mssql, если мне не изменяет память, страница в стандарте равна 8 кб). И вот - дальше уже работа идет не с диском, а с оперативной памятью. То бишь если твои записи, которые ты вибыраешь были соседними (в пределах одной страницы например) - обращений к диску больше не будет, и на скорости/нагрузке это практически не скажется. |
| Время: 13:58 |