Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] suma dla danych z jednego tablicy + wybór
Wykrywacz
post
Post #1





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Mam do was pytanie, mam tabele:
Id_prac | kod | wartosc |kod_listy| data|
1111 |111 | 350 |14 |01.01.07|
1111 |112 | 350 | 14 | 01.01.07|
1111 |111 | 450 | 15 |01.01.07|
1111 |112 | 450 | 15 |01.01.07|
1111 |111 | 450 | 16 |01.01.07|
1112 |111 | 350 |14 |01.01.07|
1112 |112 | 350 | 14 | 01.01.07|
1112 |111 | 450 | 15 |01.01.07|
1112 |112 | 450 | 15 |01.01.07|
1112 |111 | 450 | 16 |01.01.07|
1112 |112 | 450 | 16 |01.01.07|

1. Jak zrobić sumę wartości wyglądającą tak że SUM(wartosc(kod111) - wartosc(kod112)) where id_prac ....
2. Dla pierwszego pracownika brakuje kodu 112 przy kod_listy 16. Jak najprościej to sprawdzić?

Problem polega na tym że ilość kodów dla danego kodu_listy nie jest taka sama (problem 2.).
Problem 1 jeżeli udało by mi się zrobić selekcję w której nie brął bym kod_listy w który występuje tylko jeden kod a dokładnie tylko 111, tez by się rozwiązywał.

Macie może pomysł jak to zrobić

aha tylko SQL bez php'a.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


1. Jeżeli w kolumnie `kod` masz jedynie wartości 111 i 112, to można je zamienić przy użyciu prostej matematyki na odpowiednio: 1 i -1. Teraz wystarczy tylko użyć tego jako znaku dla wartości z kolumny `wartosc`:
  1. SELECT SUM( ( kod * -2 + 223 ) * wartosc ) AS suma
  2. FROM tabela WHERE ( Id_prac = 1111 )


2.
  1. SELECT Id_prac, kod_listy
  2. FROM tabela GROUP BY Id_prac, kod_listy
  3. HAVING COUNT( * ) < 2
Go to the top of the page
+Quote Post
arecki
post
Post #3





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

Ostrzeżenie: (0%)
-----


Nie bardzo chyba zrozumiałem ale o coś takiego chodzi ? :
  1. SELECT id_prac AS IDpr, (
  2. (SELECT SUM( wartosc ) FROM tabela WHERE kod = '111' AND id_prac = IDpr GROUP BY id_prac)
  3. -
  4. (SELECT SUM( wartosc ) FROM tabela WHERE kod = '112' AND id_prac = IDpr GROUP BY id_prac)
  5. ) AS roznica
  6. FROM tabela GROUP BY IDpr


-- EDIT --
Zapomniałem napisać że w polu "roznica" masz podane wartości które chciałeś (przynajmniej wg. mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) otrzymać.

Ten post edytował arecki 29.01.2008, 21:56:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:08