Как пронумеровать записи в группе ?

Natasha_msk
Дата: 28.02.2008 17:14:56
Всем добрый день :-) Как пронумеровать записи в группе ?
есть tab1
Группа Товар
1 Молоко
1 Кефир
1 Сметана
2 Колбаса
2 Мясо

надо tab2
Группа Товар Номер
1 Молоко 1
1 Кефир 2
1 Сметана 3
2 Колбаса 1
2 Мясо 2

Советы есть в теме: "Нумерация записей в запросе по критерию..."
но применить их к этому случаю не смогла :-( блондинка наверно. Помогите кому не трудно плиз :-)
<>
Дата: 28.02.2008 17:18:02
Karfaqen
Дата: 28.02.2008 17:52:23
Natasha_msk
1 Молоко 1
1 Кефир 2
1 Сметана 3
Чем определен порядок записей внутри групп? Есть ли в этой таблице поле уникального кода записи?
Natasha_msk
Дата: 28.02.2008 19:54:45
Внутри группы записи идут как в накладных, т.е. хотелось бы пронумеровать их сверху вниз,
как они уже расположены в таблице tab1. Уникального кода нет и один и тот же товар может быть в нескольких группах.
Natasha_msk
Дата: 28.02.2008 20:04:15
Не умею вставлять гиперссылки, но на этом форуме в теме "Нумерация записей в запросе по критерию..." пример с похожим случаем, но я никак не могу адаптировать его под свой. :-(
Karfaqen
Дата: 28.02.2008 20:16:41
как в накладных, пронумеровать их сверху вниз, как они уже расположены в таблице tab1
Это очень иллюзорное представление о порядке
Уникального кода нет
Без первичного ключа в реляционных БД - не жизнь.

Если все так плохо - можете попытаться с делать нумерацию как предложено выше по ссылке. Либо, если это вам надо для ОТЧЕТА - можете прямо там сделать поле задав в нем свойство "Сумма с накоплением" = "Для группы" - это будет вообще самый простой вариант для вас.
Karfaqen
Дата: 28.02.2008 20:37:48
Вопрос об уникальности значений некоторого поля (хотя бы в пределах группы) был поставолен не случайно. Дело в том, что решения задачи генерации порядкового номера при помощи запроса, основаны на сравнении таких уникальных значений.

Можно использовать с этой целью поле названий товара, но дело в том, что при этом у вас на выходе порядок записей станет другим, и если вы НЕ знаете, чем у вас можно ЯВНО задать нужный вам (исходный) порядок, то вы получите не совсем то, что хотели.

Скажем если принять алфавитный порядок товара, то можно попробовать так:
SELECT p1.Группа, p1.Товар, 
(Select Sum(1) From tab1 AS p Where p.Товар<=p1.Товар And p.Группа=p1.Группа) AS Номер
FROM tab1 AS p1
ORDER BY p1.Группа,p1.Товар
Однако в исходном прмере он ведь у вас не алфавитный.
booby
Дата: 28.02.2008 23:25:32
Karfaqen

...первичного ключа в реляционных БД - не жизнь....

вообще надо бы подчеркнуть эту не жизнь от не жизни со старым аккумулятором на мотоцикле
"Урал" для миллиционера-Жженова, преследующего угонщика-Деточкина.

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


- Простите, а вы не псих?
- Нет, у меня и справка есть.
booby
Дата: 28.02.2008 23:28:14
хм.
угонщика-Смоктуновского.

такая вот, панимаешь, реляция.