Jak do grupowania dodać podzapytanie ?

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ć ?

0

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

0

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

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

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.

0

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

0

Czyli po czym porownac ?

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

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

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ć

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