![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki problem
2 tabele o różnej liczbie rekordów; 1 tabela- wydano, 3 kolumny id(int), nr(varchar), materiał(int) i 2 tabela zrobiono 3 kolumny id(int), nr(varchar), części(int). Relacja między tymi dwoma kolumnami to wydano.nr=zrobiono.nr. Jak odjąć sumę kolumny części od sumy kolumny materiał aby wartość zawracana była poprawna arytmetycznie. Kod: SELECT SUM(wydano.material) - SUM(zrobiono.czesci) from material LEFT JOIN zrobiono ON material.nr=zrobiono.nr; podaje wynik ale błędny. Poproszę o pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
INNER JOIN
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 2 Dołączył: 14.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
ten sam błąd arytmetyczny jak w przypadku mojego zapytania.
próbowałem INNER zawraca taki zam błąd jak w przypadku LEFT JOIN. Wykonuje zapytanie ale podaje błędny wynik |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Mógłbyś wkleić przykładowe dane i wynik jakiego oczekujesz?
Być może musisz sobie zaemulować FULL OUTER JOIN (MySQL nie obsługuje tego natywnie więc trzeba połączyć LEFT JOIN i RIGHT JOIN) Ten post edytował Mchl 16.03.2010, 23:21:13 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wydano 430, zrobiono 190 czyli sum(wydano.material) - sum(zrobiono.zrobione) powinno być 240.
Źle liczy. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
No tak. Tutaj to złączenie nie ma żadnego sensu. Po prostu liczysz sumę w jednej tabeli, sumę w drugiej i odejmujesz
Kod SELECT wydano.material - zrobiono.zrobione FROM
(SELECT SUM(material) AS material FROM wydano) AS wydano, (SELECT SUM(zrobione) AS zrobione FROM zrobiono) AS zrobiono |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zawraca błąd
#1064 - Something is wrong in your syntax obok 'SELECT SUM(material) AS material FROM wydano) AS wydano, (SELEC' w linii 2 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
SELECT (SUM(wydano.material) - (SELECT sum(zrobiono.zrobione) FROM zrobiono)) AS wynik FROM wydano
zawraca również błąd; #1064 - Something is wrong in your syntax obok 'SELECT sum(zrobiono.zrobione) FROM zrobiono)) AS wynik FROM wyda' w linii 1 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 2 Dołączył: 13.05.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
SELECT (SUM(wydano.material) - (SELECT sum(zrobiono.zrobione) FROM zrobiono)) AS wynik FROM wydano zawraca również błąd; #1064 - Something is wrong in your syntax obok 'SELECT sum(zrobiono.zrobione) FROM zrobiono)) AS wynik FROM wyda' w linii 1 coś sknociłeś, bo działa bez problemu. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Która wersja MySQL?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wersja MySQL?
leciwa 3.23, może mieć wpływ? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 13 Dołączył: 12.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Porównaj PHP3 i PHP5. Widać różnicę?(IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kolejna ofiara Krasnala?
MySQL do wersji 4.1 nie obsługiwał podzapytań (a z tego tutaj korzystamy) Poza tym już od ponad roku wersje 4.x nie są wspierane przez producenta. 3.x to po prostu archeologia. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zgadza się, wywalam to g.. i instaluję to co trzeba.
Pozdrawiam i dzięki. SELECT (SUM(wydano.material) - (SELECT sum(zrobiono.zrobione) FROM zrobiono)) AS wynik FROM wydano Zapytanie śmiga jak należy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 15:23 |