![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 27.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie
Nasunęła mi się myśl, że dobrze by było aby w pewnych sytuacjach mysql umożliwiał utworzenie zapytania do zbioru wyników powstałego na skutek zapytania wcześniejszego. Chodzi mi o to ze wskutek skomplikowanego zapytania SQL, w którym sklejałem JOINAMI wiele dużych tabel otrzymałem niewielki zbiór wyników (parę rekordów). Kolejne zapytanie jakie chciałbym wykonać to to samo co porzednio tylko nałożony jeszcze jeden INNER JOIN - właściwie mógłbym żądane informacje wyciągnąć zapytaniem do tamtego zbioru wyników. (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif) Czy tak się da (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) 1) Bo inne rozwiązanie widzę tylko - zmusić system do ponownego sklejania tych samych tabel jeszcze raz (no trudno) 2) wykonać tylko to bogatsze zapytanie z dodatkowym INNER JOINEM i wrzucić wynik zapytania do tabeli i operować już na nim z poziomu php. No ale nie jest to wygodne, i wiąże się z wielokrotnym przemieszczaniem wskaźnika do zbioru wyników (w moim rozwiązaniu nie mogę zrobić tylko 1 pętli) pozdrawiam, - bart Ten post edytował bartu$ 17.07.2005, 19:15:15 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat(bartu$ @ 2005-07-17 19:12:46) Nasunęła mi się myśl, że dobrze by było aby w pewnych sytuacjach mysql umożliwiał utworzenie zapytania do zbioru wyników powstałego na skutek zapytania wcześniejszego. A podzapytania w MySQL 4.1.x nie starczą? |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 27.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
NIE.
Tu nie chodzi o podzapytania. Wyniki obu zapytan potrzebuje przetwarzac w kodzie php i wyswietlac na ekranie. Czyli musze miec do nich uchwyty. Zagniezdzone to nie to, o co mi chodzi. Te 2 zapytania niewiele sie roznia. A sa wynikiem sklejania wielu duzych tabel i pomyslalem czyby tego nie zoptymalizowac. Wyobrazcie sobie, ze mam zbior rekordow - wazna dla mnie odpowiedz na jakies QUERY i ten zbior rekordow zawiera kolumne ktora ma wartosci ktore wlasciwie ze slowem DISTINCT sa odpowiedzia na nastepne moje pytanie SQL. Wiec po co 2x dochodzic do tego zbioru wyniku. Szkoda cennych sekund. Czy nie da sie jakos zadac pytania do uchwytu zbioru wyników w bazie. Przeciez zbior wynikow to tez jakas tabela. - bart Ten post edytował bartu$ 17.07.2005, 21:37:04 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
hmm ... tabela tymczasowa (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) insert into <Tabela_tymczasowa> ... potem na tej tymczasowej robisz disctinct i done ... pozdrawiam |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 27.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie potrzebne by było coś w stylu tabeli tymczasowej.
Ale: 1) skrypty bede musialy pracowac na kontach mysql z uprawnieniami do create table - zupelnie niepotrzebnie 2) jesli powstanie create table to gdy inny uztkownik wywola to samo zdarzenie to musialaby nazwa tabeli zawierac unikalny identyfikator np. sesji 3) jak ktos albo cos przerwie skrypt, to w bazie powstanie mi masa zbednych tabel. Gdyby tabele moglyby byc wirtualne, byloby fajnie. Inaczej to rozwiazanie odpada. ps. przeciez czesto zdarza sie sytuacja ze chcialoby sie zrobic nastepne pytanie b.podobne do poprzedniego i wlasciwie jego zbior wynikow moglby wystarczyc jako tabela na ktorej to drugie zapytanie moznaby zrobic. Po co marnowac czas na od nowa łączenie tabel INNER JOINAMI zeby w koncu klauzula WHERE wyciagnac ten maly zbior ktory juz mielismy wyzej (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
![]() ![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Jak sama nazwa wskazuje tabela tymczasowa to tabela tymczasowa, trwa jedna sesje.
Nie widze sensu takiego kombinowania z zwracaniem zbiorow i zapytaniem do nich? Musialbys pobierac, przekazywac dane? Po co, wlasnie to bedzie zajmowalo duzo czasu. Wszystko da sie zrobic podzapytaniami. Bo naprawde odwolujesz sie wtedy do konkretnego zbioru. Podaj konkretny przyklad co masz i co chesz osiagnac. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
W PostgreSQL są takie fajne kursory które może twój problem by rozwiązały.
|
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat W PostgreSQL są takie fajne kursory które może twój problem by rozwiązały. Nie tylko kursory, w ogole dla mnie PG to jest cos tak wspanialego ze MySQL dopiero to osiagnie za 6 moze 5 lat. @bartu$ Mozesz opisac szczegolowo problem, moze komus uda sie wpasc na jakis optymalny pomysl. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 21:36 |