Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: czy można tworzyc query sql do zbioru wyników ?
Forum PHP.pl > Forum > Bazy danych > MySQL
bartu$
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.

worriedsmiley.gif

Czy tak się da 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
crash
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ą?
SongoQ
Po co tam kombinowac, mozesz uzyc podzapytan, gdzie bedziesz mial cos w tym stylu:

  1. SELECT *
  2. FROM (tutaj zbior z zapytania)
bartu$
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
orson
witam ...

hmm ... tabela tymczasowa questionmark.gif insert into <Tabela_tymczasowa> ... potem na tej tymczasowej robisz disctinct i done ...

pozdrawiam
bartu$
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 questionmark.gif? sad.gif
SongoQ
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.
popbart
W PostgreSQL są takie fajne kursory które może twój problem by rozwiązały.
SongoQ
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.
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.