Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-10-11 09:59:00

  zyga - Użytkownik

zyga
Użytkownik
Zarejestrowany: 2005-08-25

problem z SQL

heja

Mam prośbę o pomoc w konstrukcji prostego zapytania w SQL-u (na marginesie działam na Mysql 5.0)

Mianowicie mam dwie tabele, ktore mają bardzo dużo rekordów, w jedej kolumnie znajduje się kwota i potrzebuje ją najzwyczajniej zliczyć z odpowiednimi założeniami z tabeli drugiej (na marginesie). Napisałem ten skrypt, ale chcę go zmodyfikować, ponieważ chcę sprawdzić czy kwoty się zgadzają i  nie chcę żeby brał mi wszystkie rekordy z bazy tylko np. 4-ry.

tak wygląda moje zapytanie:

$sumuj_kwote=mysql_query("SELECT SUM(kwota) AS suma_kwoty FROM wk_wniosek,wk_dane WHERE wk_dane.czy_na_oddziale='0' AND (wk_dane.status='Zaakceptowano' OR wk_dane.status='Rezygnacja' OR wk_dane.status='Wyplacono') AND(wk_wniosek.id=wk_dane.id_wniosku)  ");

i on pokazuje mi wszystkie rekordy, dodałem za tym LIMIT 4 - ale to nie pomogło dlaej mi sumuje wszystkie rekordy :(

proszę o pomoc !!
pozdrawiam


apt-get remove windows ....
apt-get install debian :)

Offline

 

#2  2007-10-11 10:42:12

  grzegorz.85 - Członek DUG

grzegorz.85
Członek DUG
Skąd: Ostrołęka
Zarejestrowany: 2007-07-12
Serwis

Re: problem z SQL

Z tego co zrozumiełem, poprzez użycie LIMIT 4 chcesz uzyskać, że zliczy Ci tylko pierwsze 4 krotki tabeli.

W rzeczywistości jest troszkę inaczej. LIMIT odnosi się do tego które wyniki zapytania mają być wyświetlone. Jeżeli chcesz, żeby zsumowało ci tylko 4 początkowe rekordy
uzyj np. takiego zapytania:

Kod:

SELECT SUM(kwota) AS suma_kwoty
FROM wk_wniosek w, wk_dane d
WHERE d.czy_na_oddziale='0' AND 
    (d.status = 'Zaakceptowano' OR
    d.status = 'Rezygnacja' OR
    d.status = 'Wyplacono') AND
    w.id = d.id_wniosku AND
    w.id < 5

PS. Zapytanie powinno zwrócić sumę pierwdszych 4 krotek, jeżeli tabela nie zawiera dziur w kluczu id. Jeżeli chcesz aby zwróciło niezależnie od tego użyj takiego zapytania:

Kod:

SELECT SUM(s.kwota) AS suma_kwoty
FROM (SELECT kwota
    FROM wk_wniosek w, wk_dane d
    WHERE d.czy_na_oddziale='0' AND
        (d.status='Zaakceptowano' OR
        d.status='Rezygnacja' OR
        d.status='Wyplacono') AND
        w.id=d.id_wniosku
    LIMIT 4) s

// zapytanie pisane z palca, więc może nie zadziałać, ogólnie chodzi o to, aby najpierw stworzyć wirtualną tabelę, która zawiera wszytskie interesujące nas rekordy, ograniczyć ją do 4, i dopiero sumę z tej tabeli zsumować.

Offline

 

#3  2007-10-11 11:59:32

  zyga - Użytkownik

zyga
Użytkownik
Zarejestrowany: 2005-08-25

Re: problem z SQL

dzieki wielkie sprawdze :) :) :)


apt-get remove windows ....
apt-get install debian :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)