Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nowa tabela na podstawie starej, Stworzenie nowej tabeli na podstawie starej
gosia21
post 26.03.2013, 15:06:35
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 11.01.2010

Ostrzeżenie: (0%)
-----


Cześć, jak się domyślacie potrzebuję pomocy z SQL.

Załóżmy, że mam tabelę "A", która zawiera kolumny "ID", "NUMER_ASORTYMENTU" "DATA_REALIZACJI" oraz "MAGAZYN". W tej tabeli jest kilka set rekordów, w których wartość "NUMER_ASORTYMENTU" czasami się powtarza.

Pytanie: Jak utworzyć (czy w ogóle się da) tabelę "B", która będzie zawierać kolumny "ID", "NUMER_ASORTYMENTU", "OST_DATA_REALIZACJI" i "ILOSC_WYSTAPIEN".

gdzie

"OST_DATA_REALIZACJI" - będzie najnowszą wartością pola "DATA_REALIZACJI" z tabeli A dla danego "NUMER_ASORTYMENTU"
"ILOSC_WYSTAPIEN" - będzie ilością wystąpień rekordów o "NUMER_ASORTYMENTU" z tabeli A

a w kolumnie "NUMER_ASORTYMENTU" w tabeli B nie będzie pojawiać się jeden asortyment wielokrotnie.

Znam podstawowe polecenia ale nie potrafię ich połączyć tak aby dały taki wyniki.

Może to trochę lepiej wytłumaczy o co chodzi. Chcę aby nowa tabela zawierała po jednym rekordzie dla każdego asortymentu, który pokaże najnowszą datę z jaką występował on w tabeli A oraz krotność wystąpień w tabeli A czyli ile razy pojawił się w tabeli A rekord, w którym "NUMER_ASORTYMENTU" był taki sam.
Go to the top of the page
+Quote Post
Kofel
post 26.03.2013, 16:16:38
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 22
Dołączył: 14.12.2007
Skąd: Wyszków

Ostrzeżenie: (0%)
-----


Kod
INSERT INTO B (ID,NUMER_ASORTYMENTU,OST_DATA_REALIZACJI, ILOSC_WYSTAPIEN) SELECT ID, NUMER_ASORTYMENTU, DATA_REALIZACJI, count(NUMER_ASORTYMENTU) FROM A ORDER BY DATA_REALIZACJI desc GROUP BY NUMER_ASORTYMENTU;
Go to the top of the page
+Quote Post
gosia21
post 26.03.2013, 16:47:44
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 11.01.2010

Ostrzeżenie: (0%)
-----


Niestety dostaje komunikat

SQL Error: ORA-00933: polecenie SQL niepoprawnie zako�czone
00933. 00000 - "SQL command not properly ended"
Go to the top of the page
+Quote Post
mmmmmmm
post 26.03.2013, 20:43:42
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. CREATE TABLE B AS
  2. SELECT NUMER_ASORTYMENTU, MAX(DATA_REALIZACJI) AS DATA_REALIZACJI, Count(*) AS ILOSC FROM A GROUP BY NUMER_ASORTYMENTU

Jeśli CREATE TABEL nie zadziała to spróbuj dać:
  1. SELECT NUMER_ASORTYMENTU, MAX(DATA_REALIZACJI) AS DATA_REALIZACJI, Count(*) AS ILOSC INTO B FROM A GROUP BY NUMER_ASORTYMENTU

Go to the top of the page
+Quote Post
gosia21
post 27.03.2013, 09:26:11
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 11.01.2010

Ostrzeżenie: (0%)
-----


Dzięki, jedna i druga opcja działa i dają właściwy efekt. Super:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 10:08