Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obliczenia bezpośrednio w bazie danych
Forum PHP.pl > Forum > Bazy danych
kovalson
Witam, od pewnego czasu mam problem z napisaniem zapytania, które ma dokonać obliczeń na 2 róznych tabelach bezpośrednio w bazie, a chodzi mi o coś takiego:


Chcę z TABELI 1 zsumować wszystkie pola o nazwie ILOŚĆ grupując je względem ID, a w TABELI 2 chcę zliczyć wystąpienia (COUNT) samego ID2 i pogrupować je względem ID.
Następnie otrzymane ilości wystąpień z TABELI 2 chcę podzielić przez sumy ILOŚCI z TABELI 1 ale tylko tam, gdzie TABELA1.ID = TABELA2.ID2 <- ID jest wspólne dla obu tabel.

Próbowałem robić to INNER JOINEM - złączyć obie tabele względem ID , ale przy zapisie SUM(ILOSCI) wychodziły brednie - zamiast np. 300 wychodziło 98 000, tak samo COUNT(ID2) - zamiast 30 wychodziło 1300.
Przykładowe zapytanie wyglądało mniej więcej tak, ale uprzedzam, że nie działa poprawnie:

  1. SELECT (COUNT(ID2) / SUM(ILOSCI)) AS wynik
  2. FROM TABELA_1
  3. INNER JOIN TABELA_2 ON TABELA_1.ID = TABELA_2.ID
  4. GROUP BY ID
redeemer
Pisane na szybko, prawdopodobnie da się lepiej:
  1. SELECT t1.id,sum_ilosc,count_id2,count_id2/sum_ilosc AS wynik FROM
  2. (SELECT t1.id,sum(t1.ilosc) AS sum_ilosc FROM tabela1 AS t1 GROUP BY t1.id) AS t1
  3. LEFT JOIN
  4. (SELECT t2.id,count(t2.id) AS count_id2 FROM tabela2 AS t2 GROUP BY t2.id) AS t2
  5. ON t1.id=t2.id
kovalson
Uff, lekko przerobiłem do własnych potrzeb i w końcu działa jak należy. Wielkie Dzięki! smile.gif
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.