Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка записей [D7, IB5.x]


Страницы:   1 2 3

Shade ©   (2004-08-08 11:19:00) 

Знает кто нибудь как вывести записи в нужном мне порядке?, например по ID= 3,12,5... Ну короче этот список известен, и дан либо в строке, либо в массиве.
 Через 'ORDER BY' никак не получается, 'IN' воспринимается как множество... Подгружать по одной записи тоже не вышло. ВЫРУЧАЙТЕ ПРОГРАММЕРЫ!!!


VID   (2004-08-09 23:55:00) [1]

Дык, какой же ему прямой ответ дать, если он прямого и конкретного вопроса не задал :) что за инфу...

впрочем, я всё равно ничем не смог бы помочь, я акцесс обошёл стороной.


sniknik   (2004-08-09 23:40:00) [2]

VID ©   (09.08.04 22:55) [41]
думаеш я издеваюсь? мне кажется наоборот.
вот тебе один для примера
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092079761&n=1
дай ему прямойответ. (счастье если даш ссылку на UBPFD и он сам разберется, но боюсь этого не будет)


VID   (2004-08-09 22:55:00) [3]

sniknik ©   (09.08.04 22:12) [40]
Бывает период когда человек воспринимает только прямые ответы, он ещё не готов саморазвиваться, "видеть между строк" и тому подобное. Ему просто нужен код. Просто я сам прошёл через такой этап, и сколь сильно это бесит мастеров столь сильно это необходимо новичкам.

Лично мне в своё время в период активного изучения мною Interbase помогал один мой друг через интернет, и чаще всего методом "прямого ответа" - т.е. код давал. Это было на самом начальном этапе, и я бездумно использовал этот код говоря спасибо и развивая проект дальше.

А потом стали возникать вопросы: Почему это именно так работает, и что если.... Как правило эти вопросы возникли, когда полученный код после некоторого использования требовалось всё-таки немного модифицировать. Вот на этом этапе новичёк готов к анализу советов.

Поэтому, лично тебе, я хочу посоветовать быть не столь категоричным в этом отношении. Тем более что ты можешь и то и другое: дать совет или просто подкинуть готовое решение.

В конце-концов, ведь не зря в гостевой книге готовых решений для дельфи (UBPFD) столько благодарных отзывов.

ИМХО.


sniknik   (2004-08-09 22:12:00) [4]

> А sniknik © если такой умный, то чем бы приколы загонять ответ бы написал. Всяк "братьям по оружию помагать нужно"!
а ты почитай внимательнее, я ведь помогал, но ты все успешно игнорировал... а второй раз одно и то же скушно.
или только прямые ответы воспринимаеш? тебя прямо ткнуть туда где я говорил тоже самое что и VID сейчас? а до этого и другое. ну так здесь не ликбез, тебя любимого, другим развлечься тоже нужно.

- если ты такой умный чего же ты строем не ходиш?
а вот не буду. не хочу и не буду.


Shade   (2004-08-09 21:44:00) [5]

VID
Тебе спасибо за ответ. Сейчас попробую!

Sergey13 ©
Ты не прав, проектирование у меня нормальное. К каждому изделию прилагается свой маршрут (изготовления по цехам). И поэтому без сортировки здесь никак (не будут же деталь красить если ещё фрезеровали :))) ).

А sniknik © если такой умный, то чем бы приколы загонять ответ бы написал. Всяк "братьям по оружию помагать нужно"!


Sergey13   (2004-08-09 09:17:00) [6]

2[35] Shade   (08.08.04 23:36)
Вот спорят все, спорят. А зачем сортировать по несортируемому, объясни? Так можно и картинки по содержимому "сортировать". ИМХО, у тебя проблемы в проектировании структуры.


VID   (2004-08-09 01:37:00) [7]

>>Короче при таком объединении запросов 'ORDER BY' вообще не воспринимается.
>>Что хоть примерно можно в этом случае поделать???

в Order by указывай не имена полей а их порядковые номера в результирующем запросе.

короче.

в твоём случае всё что ты хочешь должно выглядеть так:

for ord := 1 to n do
begin
  Query.SQL.Add( 'SELECT TABLE1.DATA, TABLE2.DATA, TABLE2.ID' );
  Query.SQL.Add( 'FROM TABLE1, TABLE2' );
  Query.SQL.Add( 'WHERE TREE .ID=' + IntToStr( mas[ord] ) + ' AND TABLE1.ID=TABLE2.ID_ITEM' );
  if ord < n then Query.SQL.Add( 'UNION ALL' );
end;
Query.SQL.Add('ORDER BY 3');


sniknik   (2004-08-08 23:50:00) [8]

правильно, это самая умная мысль во всем топике. (о принятии программиста на работу)

а теперь по вопросу:
а есть ли вопрос? чемулибо ничто не поможет если чтонибудь замутить. запомни, это аксиома.

ты кстати похоже путаеш, место обшения программистов и сайт бесплатных репетиторов для переучивающихся бухгалтеров... от этого все твои проблемы с непониманием.


Shade   (2004-08-08 23:36:00) [9]

sniknik ©, Молодец очень умно. Может вообще тогда форум весь закрыть нафиг и вместо него объявы программеров вывесить?

Теперь по вопросу:
Может как нибудь вложенный запрос на внутреннюю таблицу замутить?


sniknik   (2004-08-08 23:31:00) [10]

подумайте там всетаки над первым ответом, это был отличный совет. (и вам хорошо и на одного безработного программиста меньше будет)


sniknik   (2004-08-08 23:28:00) [11]

можно почитать книги, можно хелп, на крайняк перечитать свой же топик, ответ уже был.


Shade   (2004-08-08 23:23:00) [12]

Блин мужики ВЫ ВООБЩЕ КРУТЫЕ. Я дней пять клавиатупу на этом грыз. Но тут ещё проблема есть небольшая

Всё конечно хорошо, и прекрасно работает а именно:

 for ord := 1 to n do begin
   Query.SQL.Add( 'SELECT ' + IntToStr( ord ) + ' AS ord,' );
   Query.SQL.Add( 'TABLE1.DATA,' );
   Query.SQL.Add( 'TABLE2.DATA' );
   Query.SQL.Add( 'FROM TABLE1, TABLE2 ' );
   Query.SQL.Add( 'WHERE TREE.ID=' + IntToStr( mas[ord] ) + ' AND TABLE1.ID=TABLE2.ID_ITEM' );
   Query.SQL.Add( 'UNION' );
 end;
 Query.SQL.Delete( Query.SQL.Count - 1 );

Но дело в том, что у TABLE2 есть свой ID и вторая таблица
(пририсовываясь к первой) выводится чёрт знает в каком порядке. :(
А если в конце приписать строчки типа:

 Query.SQL.Add('ORDER BY ord, TABLE2.ID');

или просто:

 Query.SQL.Add('ORDER BY TABLE2.ID');

То выводится ошибка:
'
Dynamic SQL Error
SQL error code = -104
Invalid command
invalid ORDER BY clause.
'

Короче при таком объединении запросов 'ORDER BY' вообще не воспринимается.
Что хоть примерно можно в этом случае поделать???


VID   (2004-08-08 21:36:00) [13]

Shade   (08.08.04 21:03) [29]
Я надеюсь ты просёк, что сам текст запроса надо формировать автоматически ? ;)


сергей1   (2004-08-08 21:10:00) [14]

ну почему два, хоть 100, в данном случае столько, сколько там у тебя строк


Shade   (2004-08-08 21:03:00) [15]

Не знал, что в запросе можно два раза select использовать. Сейчас попробую. А так спасибо всем кто ответил :))) КРУТЫЕ ПРОГРАММЕРЫ!!!


сергей1   (2004-08-08 20:56:00) [16]

эх, был бы этот стандарт под рукой, но ничего, куплю нормальный справочник, часть проблем надеюсь уйдет


Johnmen   (2004-08-08 20:53:00) [17]

>VID ©  
>сергей1

Кстати, поведение UNION с предикатом ALL или без оного достаточно понятно описано в стандарте SQL.

"Ищущий да обрящет" (c)

(08.08.04 15:03) [8]


сергей1   (2004-08-08 18:31:00) [18]

да... век живи век учись !

а в по хелпу об этом и не догадаться


VID   (2004-08-08 18:27:00) [19]

сергей1   (08.08.04 18:21) [24]
На твой вопрос кажется я смогу ответить, хотя я уже вовсю сомневаюсь в своей компетентности....

Когда отсутствует опция ALL сервер проводит исключение ДУБЛИРУЮЩИХСЯ записей, а ему это легче сделать если предваритально осортировать весь набор строк. Поэтому остуствие ALL явно исключает дублирование, а неявно ещё и сортирует набор данных.


сергей1   (2004-08-08 18:21:00) [20]

получается что я нихрена не знаю union, но пусть мне кто-нибудь обьяснит, почему запрос у sniknik возращает правильный результат, ведь добавив all, мы всего-то должны были получить все записи, какое это имеет отношение к сортировке, ведь этот запрос и в самом деле все отсортировал правильно


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо