Форум сетевых администраторов Страницы (4): « 1 2 [3] 4 »
Показаны 58 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Вопросы по MS SQL Server (http://netadmin.ws/forum/showthread.php?threadid=10996)


Помещено he][es 05-01-2006 в 14:05:

Новый вопрос: хачу "LIMIT 12" (ну или LIMIT 1,12) в MS!!!! Или я нифига в этой доке не пойму, или у него нету LIMIT...

__________________
Админ - вождь Апачей...


Помещено Viktor 09-01-2006 в 11:47:

Если можно, то подробней про

quote:
хачу "LIMIT 12"

__________________
Тест - проверка верности!


Помещено he][es 09-01-2006 в 12:23:

Ну в MySQL пишешь
SELECT * FROM table LIMIT 1, 12;
и он выберает только первые 12 строк запроса...

__________________
Админ - вождь Апачей...


Помещено Viktor 09-01-2006 в 12:29:

В SQL Server
SELECT TOP 12 * FROM table

__________________
Тест - проверка верности!


Помещено he][es 09-01-2006 в 13:10:

Viktor из за моей фанатичной упертости в кроссплатформенность данный запрос не проканывает ... MySQL его не переварит.

__________________
Админ - вождь Апачей...


Помещено Viktor 09-01-2006 в 13:18:

Других вариантов нет...

__________________
Тест - проверка верности!


Помещено he][es 09-01-2006 в 14:02:

:/ жаль... Ладно, прорвемся...
Ещё один вопрос: есть запрос:

code:

SELECT     limits.id, limits.structura_kks_id, limits.structura_rashodov_id, limits.to_year, limits.to_year_total, structura_kks.title AS structura_kks_title, 
                      structura_rashodov.title AS structura_rashodov_title,
                          (SELECT     SUM(total_price_nds)
                            FROM          rashodi INNER JOIN
                                                   structura_kks structura_kks_inner ON rashodi.structura_kks_id = structura_kks_inner.id
                            WHERE      structura_kks_inner.cleft >= structura_kks.cleft AND structura_kks_inner.cright <= structura_kks.cright) AS rashodi_total
FROM         limits INNER JOIN
                      structura_kks ON limits.structura_kks_id = structura_kks.id INNER JOIN
                      structura_rashodov ON limits.structura_rashodov_id = structura_rashodov.id
WHERE     (limits.to_year_total >=
                          (SELECT     SUM(total_price_nds)
                            FROM          rashodi INNER JOIN
                                                   structura_kks structura_kks_inner ON rashodi.structura_kks_id = structura_kks_inner.id
                            WHERE      structura_kks_inner.cleft >= structura_kks.cleft AND structura_kks_inner.cright <= structura_kks.cright))
ORDER BY structura_kks.cleft, structura_rashodov.cleft


Хотелось бы вместо 2ого "вложенного" запроса написать что то типа:

code:
SELECT     limits.id, limits.structura_kks_id, limits.structura_rashodov_id, limits.to_year, limits.to_year_total, structura_kks.title AS structura_kks_title, 
                      structura_rashodov.title AS structura_rashodov_title,
                          (SELECT     SUM(total_price_nds)
                            FROM          rashodi INNER JOIN
                                                   structura_kks structura_kks_inner ON rashodi.structura_kks_id = structura_kks_inner.id
                            WHERE      structura_kks_inner.cleft >= structura_kks.cleft AND structura_kks_inner.cright <= structura_kks.cright) AS rashodi_total
FROM         limits INNER JOIN
                      structura_kks ON limits.structura_kks_id = structura_kks.id INNER JOIN
                      structura_rashodov ON limits.structura_rashodov_id = structura_rashodov.id
WHERE     (limits.to_year_total >= rashodi_total)
ORDER BY structura_kks.cleft, structura_rashodov.cleft


Ан нет, выдает ошибку... Что то с этим можно подклать?

__________________
Админ - вождь Апачей...


Помещено Viktor 10-01-2006 в 11:59:

Вполне логично, т.к. нельзя использовать в условиях имена вычисляемых столбцов.

А что мешает сделать вид, который делает необходимые вычисления?

Вид MyView

code:

SELECT     SUM(total_price_nds) AS rashodi_total
                            FROM          rashodi INNER JOIN
                                                   structura_kks structura_kks_inner ON rashodi.structura_kks_id = structura_kks_inner.id
                            WHERE      structura_kks_inner.cleft >= structura_kks.cleft AND structura_kks_inner.cright <= structura_kks.cright



Запрос (Выражение FROM нужно подправить )

code:
SELECT     limits.id, limits.structura_kks_id, limits.structura_rashodov_id, limits.to_year, limits.to_year_total, structura_kks.title AS structura_kks_title, 
                      structura_rashodov.title AS structura_rashodov_title,
                          MyView.rashodi_total 
FROM      MyView,    limits INNER JOIN
                      structura_kks ON limits.structura_kks_id = structura_kks.id INNER JOIN
                      structura_rashodov ON limits.structura_rashodov_id = structura_rashodov.id

WHERE     (limits.to_year_total >= MyView.rashodi_total)
ORDER BY structura_kks.cleft, structura_rashodov.cleft




+ виды теоретически выполняются быстрее, чем обычные запросы.

__________________
Тест - проверка верности!


Помещено he][es 10-01-2006 в 12:53:

Viktor "вид"="представление"? (я такой термин слышал).
А он возьмёт значения для WHERE "извне"?..
И опять встает вопрос о моей фанатичной упертости в кроссплатформенность... Будет ли это под MySQL 5.x работать?..

__________________
Админ - вождь Апачей...


Помещено polo 10-01-2006 в 14:11:

quote:
SELECT TOP 12 * FROM table

Imho: А не лучше ли сделать функцию для выборки таких результатов, которая бы принимала три параметра, строку запроса, limitmin, limitmax а потом запарсить строку запроса и добавить в нее то что нужно.

__________________
Всегда есть решение.


Помещено he][es 10-01-2006 в 15:57:

polo пасиба за идею... Видимо придтся так и сделать...
Вот ещё одна фишка:

code:

SELECT     structura_kks.id, structura_kks.title, structura_kks. LEVEL, structura_kks.cleft, structura_kks.cright, structura_kks.fio, 
                      contr_zadania.id AS contr_zadania_id, contr_zadania.kz_to_year AS year_of_kz, contr_zadania.kz_year AS to_year, 
                      contr_zadania.kz_I_kvartal AS kv_1, contr_zadania.kz_II_kvartal AS kv_2, contr_zadania.kz_III_kvartal AS kv_3, 
                      contr_zadania.kz_IV_kvartal AS kv_4
FROM         structura_kks LEFT OUTER JOIN
                      contr_zadania ON contr_zadania.structura_kks_id = structura_kks.id
ORDER BY structura_kks.cleft


Вроде всё что надо, НО он не совсем то что нужно делает, а если написать

code:
SELECT     structura_kks.id, structura_kks.title, structura_kks. LEVEL, structura_kks.cleft, structura_kks.cright, structura_kks.fio, 
                      contr_zadania.id AS contr_zadania_id, contr_zadania.kz_to_year AS year_of_kz, contr_zadania.kz_year AS to_year, 
                      contr_zadania.kz_I_kvartal AS kv_1, contr_zadania.kz_II_kvartal AS kv_2, contr_zadania.kz_III_kvartal AS kv_3, 
                      contr_zadania.kz_IV_kvartal AS kv_4
FROM         structura_kks LEFT OUTER JOIN
                      contr_zadania ON contr_zadania.structura_kks_id = structura_kks.id
WHERE contr_zadania.kz_to_year = '2006'
ORDER BY structura_kks.cleft


то он выбирает не все записи из таблицы structura_kks, а только те, к которым есть привязка из contr_zadania...
Требуется выбрать все из structura_kks, и привязать к ним имеющиеся в contr_zadania строки, НО с условием, что они contr_zadania.kz_to_year = '2006'... Как это лучше сделать?

__________________
Админ - вождь Апачей...


Помещено polo 10-01-2006 в 16:00:

he][es, если не секрет, зачем ты делаешь поддержку двум базам одновременно?

__________________
Всегда есть решение.


Помещено he][es 11-01-2006 в 06:06:

polo эээ... ну.. "типа круто" ... Просто когда есть возможность перенести приложение на др. БД это же хорошо.. Или я не прав?

__________________
Админ - вождь Апачей...


Помещено polo 11-01-2006 в 12:41:

Ну смотря какое приложение и на что оно направлено. Если это какой-то коммерческий прект расчитанный на узкий круг клиентов, то таке врядли нужно. Если это крупномасштабный скрипт который будет продаваться или раздаваться публично, то наверное нужно. Я например думаю так: если пишишь скрипт, максимально его подготовь для перехода на другую бд, а при надобности позже переноситься на другую бд. Хочу заметить что это лично мое мнение.

__________________
Всегда есть решение.


Помещено he][es 11-01-2006 в 17:30:

quote:
Если это какой-то коммерческий прект расчитанный на узкий круг клиентов, то таке врядли нужно.

Вот сейчас основой является MS SQL 2000. Который как бы не бесплатен... А если кто то очень правильный и не хочет его юзать?..
С др. стороны я прекрасно понимаю, что 99% что его никто кроме орг.ии для которой я его делаю использовать не будет... НО... я болен манией кросплатформенности...

__________________
Админ - вождь Апачей...


Формат времени GMT. Текущее время 21:09. Страницы (4): « 1 2 [3] 4 »
Показаны 58 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.