Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jaka funkcja do numerowanie pobranych wierszy po kolei
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Sajrox
Witam,

Kiedyś obiło mi się o uszy że w SQL jest taka funkcja która po kolei ponumeruje po pobrane wiersze z bazy.

Chodzi o to że pobieram jakieś dane sortując i grupując je każdy wiersz zostanie ponumerowany od 1. Przy otrzymaniu tablicy będę miał tam pole numerowane od i zwiększane o 1 w każdym kolejnej krotce.

Przykładowa tablice jaką chce otrzymać:

LP| ID | NAZWA
----------------------
1 | 2 | Jakis produkt |
2 | 4 | Jakis produkt |
3 | 5 | Jakis produkt |
4 | 7 | Jakis produkt |
5 | 12 | Jakis produkt |
6 | 13 | Jakis produkt |
phpion
W MySQL można to zrobić z wykorzystaniem zmiennych lokalnych (zobacz przykład nospora) natomiast w PostgreSQL może być z tym problem gdyż nie obsługuje on definiowania zmiennych lokalnych (chyba, że coś się w tej kwestii zmieniło). Sam chętnie poznałbym odpowiedź na Twoje pytanie smile.gif
erix
Wystarczy nową sekwencję utworzyć. winksmiley.jpg
  1. CREATE sequence asd minvalue 1 start 1;


Potem, każde zapytanie idzie tak:
  1. SELECT pg_catalog.SETVAL('"public"."asd"', '1');
  2. SELECT NEXTVAL('asd'), * FROM tabela;
phpion
Cytat(erix @ 16.03.2009, 02:44:41 ) *
Wystarczy nową sekwencję utworzyć. winksmiley.jpg

Niby tak, rozwiązanie banalnie proste, ale nie wiesz może jak zachowa się system jeśli kilku użytkowników będzie pobierało dane w tym samym czasie? Czy tak szybko (w SELECT) i często (każdy user) aktualizowana sekwencja nie wysypie się?
erix
A keyword CREATE TEMPORARY SEQUENCE? winksmiley.jpg

Cytat
If specified, the sequence object is created only for this session, and is automatically dropped on session exit. Existing permanent sequences with the same name are not visible (in this session) while the temporary sequence exists, unless they are referenced with schema-qualified names.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.