Jak do grupowania dodać podzapytanie ?

Odpowiedz Nowy wątek
2012-01-02 10:40
0
TABELKA: set
id
id_user id_page_rank
1 2 7
TABELKA: page_rank
id
symbol
5 'a'
6 'b'
7 'b'
8 'a'
9 'a'
10 'a'

ZAPYTANIE

SELECT COUNT(pr.id),pr.symbol 
FROM set s
JOIN page_rank pr ON (s.id_page_rank = pr.id)
WHERE s.id_user = 77
GROUP BY pr.symbol;
WYNIK
count
symbol
4 a
2 b

To zapytanie jest ok ale teraz najtrudniejsze

TABELKA: page_rank_ext
id
id_page_rank date amount
2 5 '2011-03-05' 455
3 6 '2011-05-05' 223
4 7 '2011-04-05' 312
5 8 '2011-06-05' 443
6 9 '2011-07-05' 432
7 10 '2011-08-05' 444

Jak teraz do poprzedniego zapytania dołożyć jeszcze to z tabelki page_rank_ext
żeby wybrał i pogrupował ile jest wpisów z danego symbolu i żeby wybrał
najmniejsza date z page_rank_ext i kwotę i id ?

Czyli wynik jaki chciałbym uzyskać to:
count
symbol data amount id_page_rank
4 a 2011-03-05 455 5
2 b 2011-04-05 312 7

i tutaj ta data i kwota i id dotyczy tylko jednego rekordu z tabeli page_rank_ext
mimo ze policzył ze w grupie sa 4 oraz 2 wpisy. Da się to zrobić ?

edytowany 1x, ostatnio: masterO, 2012-01-02 10:42
Nie mogę już edytować :/ generalnie pole id_page_rank to jest FK (id) z tabelki page_rank - masterO 2012-01-02 10:57

Pozostało 580 znaków

2012-01-02 10:51
0

myślę, że jakbyś napisał co gdzie jest FK to by było prościej


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2012-01-02 11:03
0

Nie mogę już edytować :/ generalnie pole id_page_rank to jest FK (id) z tabelki page_rank

Pozostało 580 znaków

2012-01-02 11:43
0
SELECT
  x.ile, 
  x.symbol,
  x.date,
  pre.ammount,
  pre.id_page_rank
FROM
  (SELECT 
    COUNT(pr.id) ile, 
    pr.symbol, 
    Min(pre.date) date
  FROM 
    page_rank pr,
    page_rank_ext pre
  WHERE
    pr.id = pre.id_page_rank
  GROUP BY 
    pr.symbol) x,
  page_rank_ext pre
WHERE
  pre.date = x.date

połącz sobie to jeszcze z set


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2012-01-02 13:26
0

Wszystko chyba jest ok ale mam w bazie kilka takich samych dat i zwraca mi klika rekordów dla symbolu 'a' mam np 4 wpisy a dla symbolu 'b' mam 3 wpisy. To nie wiem czy to da się zrobić tak żeby porównywało po dacie na samym końcu. Może wybrać tę date MIN z podselecta i pobrać ID i porównac tylko po ID ? Ale i tak jestes GENIEALNY i wielkie dzięki przynjamniej jakieś bazowe zapytanie już jest bo męcze sie od 4 dni i już nie miałem pomysłu a moje podzapytania w JOIN (SELECT rosły do takich rozmiarow ze az wstyd sie przyznac.

Pozostało 580 znaków

2012-01-02 16:01
0

no to jak masz kilka dat to trzeba się zdecydować, który rekord w takim wypadku


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2012-01-02 16:06
0

Czyli po czym porownac ?

Pozostało 580 znaków

2012-01-02 16:09
0

nie rozumiem - to Ty masz wiedzieć, które id-ammount chcesz dostać w wyniku zapytania jeśli dla JEDNEJ daty masz kilka rekordów


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2012-01-02 16:35
0

no wlasnie chcialbym dodac to ktore wybierze sie z namnijesza data. i tamto ID chcialbym dac do pobrania AMOUNT. czyli musialbym wziac jeszce zwykle pre.id juz sam nie wiem zaraz pokombinuje

Pozostało 580 znaków

2012-01-02 20:00
0
masterO napisał(a)

no wlasnie chcialbym dodac to ktore wybierze sie z namnijesza data.
ale jak się wybiorą np. dwa albo trzy z TAKĄ SAMĄ DATĄ to musisz zadecydować, które z nich chcesz wybrać


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0