Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] 3cia kolumna gdy 2 inne nie sa puste
jol.us_
post 24.11.2015, 12:26:36
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


Witam,


W bazie danych mam kolumny: A, B, C. Kolumna C zawsze ma ustawiona wartosc, kolumny A i B są opcjonalne.
Teraz wartość zwracaną z kolumny C uzależniam od tego czy kolumna A i B maja ustawiona wartosc. Jezeli A i B sa puste to zwracam "-" a jesli obydwie maja wartosc to zwaracam wartosc kolumny C.

Pseudokod:
if (( A != '') AND (B != '')) THEN C = C ELSE C = '-';

Nie mogę nic wygooglowac, może źle szukam.
Ciąglę gdzies trafiam na COALESCE, ale to nie zupelnie nie to o co mi chodzi.




--------------------
run Forest run ...
Go to the top of the page
+Quote Post
trueblue
post 24.11.2015, 12:34:24
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


IF (( A != '') AND (B != ''),C, '-') AS C
Mi się udało wygooglować: http://dev.mysql.com/doc/refman/5.7/en/con...tml#function_if

Jeszcze jest kwestia co uważasz za puste. Jesli NULL lub pusty string, to wtedy trzeba zastosować właśnie COALESCE.


--------------------
Go to the top of the page
+Quote Post
jol.us_
post 24.11.2015, 12:40:29
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


Przez puste uwazam pusty string.

COALESCE jesli dobrze zrozumialem to dziala tak ze zwraca pierwsza wartosc ktora nie jest NULL.
Czyli np. COALESCE( '', 'string1', 'string2') zwroci mi string1, co zdecydowanie nie realizuje tego co chce.


Tak na IF:
IF(A<>'' AND B<>'', C, '-') as C
Bedzie ok?


Ten post edytował jol.us_ 24.11.2015, 12:44:35


--------------------
run Forest run ...
Go to the top of the page
+Quote Post
trueblue
post 24.11.2015, 12:44:00
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


W przykładzie, który podałeś zwróci ''.
Jeśli nie interesują Cię wartości nullowe dla A i B, to rozwiązanie masz wyżej.


--------------------
Go to the top of the page
+Quote Post
jol.us_
post 24.11.2015, 12:46:14
Post #5





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


Tak masz racje zwroci ''.... MIalem zamiast '' wpisac NULL, wtedy by zwrocil string1
IF zadziałał. Dziękuję, nie wiem jak tego mogłem nie widzieć.

Ten post edytował jol.us_ 24.11.2015, 13:27:37


--------------------
run Forest run ...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 23:21