![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Mam bazę danych, w której co miesiąc tworzona jest nowa tabela: pl_201101 w styczniu pl_201102 w lutym itd. chciałbym pobierać dane zawsze z najnowszej tabeli. Mogę pobrać rok oraz miesiąc z aktualnej daty
ale zaciąłem się na łączeniu stringów w nazwie tabeli: niestety nie działa ![]() Ten post edytował TomASS 14.11.2011, 15:49:11 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nazwa tabeli nie może być dynamiczna. Koniec kropka.
Powód edycji: [wookieb]:
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Podstawowe pytanie to czemu nie masz jednej tabeli "pl", a niej kolumny z datą?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 153 Pomógł: 41 Dołączył: 28.06.2011 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Pozostaje Ci napisanie funkcji.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Wydaje mi się,że rozwiązanie Crozina jest lepsze.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Ech gadanie od rzeczy. @Niktoś nie nabijaj postów
@TomASS Wygeneruj po prostu zapytanie w php. Inaczej tego nie zrobisz.
Powód edycji: [wookieb]:
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Dzięki za info.
@Crozin: Cytat Podstawowe pytanie to czemu nie masz jednej tabeli "pl", a niej kolumny z datą? Niestety nie moja baza danych. Przewiduję (nie chcę aby dyskusja o tym rozwinęła się w tym temacie), że każda z tabel ma około 22 mln rekordów. @wookieb: Cytat Wygeneruj po prostu zapytanie w php. Inaczej tego nie zrobisz. Niestety - php nie ma nic z tym wspólnego. Aplikacja czyta zapytanie z pliku txt i dane wyrzuca na serwer. Moim zadaniem jest napisać tylko zapytanie (zmiana co miesiąc jest bardzo kłopotliwa) Ten post edytował TomASS 14.11.2011, 15:45:52 -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 30.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak naprawdę może najprostsze rozwiązanie jest najlepsze. A mianowicie piszesz zapytanie które będzie obsługiwało te tabele przez określony czas np 2 lata. Tak naprawdę to tylko kopiuj, wklej z drobnymi zmianami. W zapytaniu uzależnij odczytanie tabeli od aktualnej daty wykorzystując chociażby instrukcję IF. Proste ale powinno działać
![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Tak naprawdę może najprostsze rozwiązanie jest najlepsze. A mianowicie piszesz zapytanie które będzie obsługiwało te tabele przez określony czas np 2 lata. Tak naprawdę to tylko kopiuj, wklej z drobnymi zmianami. W zapytaniu uzależnij odczytanie tabeli od aktualnej daty wykorzystując chociażby instrukcję IF. Proste ale powinno działać ![]() Czy w samym zapytaniu mogę to zrobić? Tzn użyć IF? -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 30.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tworzysz skrypcik IF SYSDATE tutaj warunek THEN SELECT nazwa_tabeli...... END IF. i powielasz zmieniając warunek i nazwę tabeli.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Tworzysz skrypcik IF SYSDATE tutaj warunek THEN SELECT nazwa_tabeli...... END IF. i powielasz zmieniając warunek i nazwę tabeli. A będzie to traktowane jako jedno zapytanie, czy skrypt muszę zrobić w jakiejś aplikacji? Mogę tylko modyfikować plik *.txt z zapytaniem. -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 30.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tworzysz plik tekstowy i zmieniasz rozszerzenie na SQL... tyle
Ten post edytował stevan 14.11.2011, 22:07:40 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
czyli coś takiego:
? Ten post edytował TomASS 14.11.2011, 22:21:05 -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 30.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobił tak
IF (sysdate>=2011-01-01 AND sysdate<=2011-01-31) THEN SELECT * FROM pl_201101 END IF; IF (sysdate>=2011-02-01 AND sysdate<=2011-02-28) THEN SELECT * FROM pl_201102 END IF; itd.... Ten post edytował stevan 14.11.2011, 22:26:28 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A z drugiej strony - gdybyś tak z wszystkich tabel zbudował jedną (np. UNION ALL) zapisał ją jako widok i pobierał z niego tylko potrzebne wiersze. Na oko wygląda prościej - ciekawe jakby to wyglądało w praniu
![]() -------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
A z drugiej strony - gdybyś tak z wszystkich tabel zbudował jedną (np. UNION ALL) zapisał ją jako widok i pobierał z niego tylko potrzebne wiersze. Na oko wygląda prościej - ciekawe jakby to wyglądało w praniu ![]() A skąd mam wiedzieć co to jest "wszystkie tabele" - w styczniu będzie tylko pl_201101 w marcu już pl_201101 + pl_201102 + pl_201103 :/ -------------------- |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mogę się mylić. bo jak zwykle nie zwróciłem uwagi na działy (Oracle) - potraktuj więc to co piszę z dużą dozą nieufności
![]() Cytat chciałbym pobierać dane zawsze z najnowszej tabeli. Mogę pobrać rok oraz miesiąc z aktualnej daty W takim wypadku utworzenie widoku i odwoływanie się przez niego do tabeli także może być prostsze. Po prostu co miesiąc wraz z utworzeniem nowej (aktualnej) tabeli aktualizujesz widok. Może to robić ta aplikacja co, co miesiąc wrzuca dane na serwer. -------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
Druga kombinacja trochę alpejska-utworzyć w plik txt dodatkową kwerende odczytującą nazwy tabel możnaby użyć w niej klauzulę like %pl_ żeby nieco ograniczyć zakres do interesujących nas tabel.
Z kwerendy tej odczytujemy nazwy przykładowo pl_201101 pl_201102 i z pomocą np. wyrażenia regularnego wyciągamy liczby i patrzymy ,która liczba jest większa.Z wyrazu gdzie liczba jest największa używamy w zapytaniu -aby pobrać interesujące nas dane z tejże tabeli. Ten post edytował Niktoś 15.11.2011, 00:51:46 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Mogę się mylić. bo jak zwykle nie zwróciłem uwagi na działy (Oracle) - potraktuj więc to co piszę z dużą dozą nieufności ![]() W takim wypadku utworzenie widoku i odwoływanie się przez niego do tabeli także może być prostsze. Po prostu co miesiąc wraz z utworzeniem nowej (aktualnej) tabeli aktualizujesz widok. Może to robić ta aplikacja co, co miesiąc wrzuca dane na serwer. Modyfikacja aplikacji niestety nie wchodzi w grę :/ Druga kombinacja trochę alpejska-utworzyć w plik txt dodatkową kwerende odczytującą nazwy tabel możnaby użyć w niej klauzulę like %pl_ żeby nieco ograniczyć zakres do interesujących nas tabel. Z kwerendy tej odczytujemy nazwy przykładowo pl_201101 pl_201102 i z pomocą np. wyrażenia regularnego wyciągamy liczby i patrzymy ,która liczba jest większa.Z wyrazu gdzie liczba jest największa używamy w zapytaniu -aby pobrać interesujące nas dane z tejże tabeli. Nie mam dostępu do tabeli systemowej z nazwami tabel :/ -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:53 |