![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam dwie tabele na podstawie której chcę coś wyciągąnąć i muszę zastosować if. Problem polega na tym że w if() potrzebuję podać podwójny warunek. Pytanie wygląda mniej więcej tak
To oczywiście w wielkim uproszczeniu. Ale moje pytanie brzmi czy w ogóle można takie 2 warunki w if wstawić. Nigdzie nie znalazłem przykładu, a przynajmniej te co znajdowałem mnie nie satysfakcjonowały, które rozwiązywałyby ten problem. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W IF dajesz wyrazenie logiczne. Dowolne wyrazenie logiczne...
Nie:IF(tab1.warunek1=NULL tab1.warunek2='1',sum(cos),NULL) a:IF(tab1.warunek1=NULL AND tab1.warunek2='1',sum(cos),NULL) lub: IF(tab1.warunek1=NULL OR tab1.warunek2='1',sum(cos),NULL) Nie wiem co ty tam za warunek chciales miec -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie dziala jak powinno? To może napisz słownie co chcesz osiągnąć bo zapytanie samo w sobie jest ok.
ps: strzelam: Na moj gust to ty chyba chciales zrobic tak: sum(IF(tab1.warunek1 is NULL and tab1.warunek2='1',cos,NULL)) -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
co ciekawe przy or mam ten sam wynik ......
Spróbuję to opisać. W jednej tabeli mam dane statystyczne dotyczące sprzedawców. Sprzedawcy są podzieleni na kategorie. Sprzedawców trzymam w osobnej tabeli - co chyba jest najbardziej zrozumiałe. Chciałem porównać w jednej tabeli wyniki sprzedawców w zależności od ich przynależności. Każdy zależy od jakiegoś regionu i ma powiedzmy inny stopień (stąd te dwa warunki) i pełne pytanie wygląda mniej więcej w ten sposób.
To oczywiście przykład bo suma w środku jest dłuższa, ale oddaje to mniej więcej całą idee zapytania. Co ciekawe, cokolwiek nie wstawię do warunku drugiego or czy and zawsze mam ten sam wynik co w kolumnie wynikającej z pierwszego warunku lub wartość nullową - czyli nie spełniającą warunku. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zacytuje ci moją wypowiedz z poprzedniego posta:
Cytat ps: strzelam: bo na moj gust to ten sum tam wlasnie powinien wygladac.
Na moj gust to ty chyba chciales zrobic tak: sum(IF(tab1.warunek1 is NULL and tab1.warunek2='1',cos,NULL)) -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
mój błąd znalazłem. Gdzieś na końcu przykleił mi się warunek w poprzedniego pytania i schował się linijek poniżej.
![]() ![]() Ale stała się inna ciekawa rzecz. Po znalezieniu błędu i wprowdzeniu zapytanie zachowuje się jakby "nie dzieliło" wyników według warunków. Mysql sam sobie wybiera co wstawić do taabeli. I teraz to wygląda w ten sposób: Pytanie
I teraz ciekawe są odpowiedzi, ponieważ wszędzie w tabli wynikowej mam pokazane to w ten sposób data kolumna1 kolumna2 kolumna3 pelna_suma data 15 null nulll 15 data null 12 null 12 data null 10 null 10 data null null 35 35 te wyniki są kompletną bzdurą. Wygląda tak jakby spełniał sobie tylko jednej wynik. Sprawdziłem w tabeli źródłowej i to nieprawda. wygląda jakby brał pod uwagę tylko jeden warunek. Dlaczego się tak dzieje? Ten post edytował jacusek 1.02.2011, 12:31:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:13 |