Jak zwrócic wiecej niz jedno pole w warunku IF

0

Mam cos takiego.

SELECT imie, nazwisko FROM users;

Ale jesli pole type = 1 to zamiast imie i nazwisko wstaw np jacek i placek a teraz mam tak

SELECT imie, nazwisko 
  IF(type IN (1,2,3),'jacek',(SELECTdrugie_ imie FROM users2 WHEREusers.id = users2.id)) AS imie,
  IF(type IN (1,2,3),'placek',(SELECTdrugie_ nazwiskoFROM users2 WHEREusers.id = users2.id)) AS nazwisko,
FROM users

a da sie to zrobic w jednym w arunku zeby wybrac te pola ?

0

CASE w SELECT?

0

No ale jak
SELECT CASE type in (1,2,3) THEN select imie2 , nazwisko2
ELSE nazwisko, imie
END CASE

1

Nie kumam za bardzo co chcesz zrobić. IF oraz CASE zwracają zawsze jedną wartość, co nie znaczy, że warunek nie może być na kilku polach. Może gdybyś napisał zrozumiale co chcesz zrobić, to udałoby się coś wymyślić.

0

no i juz mi odpowiedziales, ze if case zwraca zawsze jedena wartosc. A mi chodzilo zeby zwracaL WIECEJ niz jedna czyli ze sie nie da.
Ja chcialem tak:
SELECT
if warunek spelniony to pokaz
polle1,
pole2,
pole3,
pole4,
else
pole1 = 3
pole2 = 6
pole3 = 'aaa',
END
FROM tabelka

tak chcialem

0

No i nie da się po prostu tak?

SELECT
  CASE WHEN type=1 THEN 'jacek' ELSE imie,
  CASE WHEN type=1 THEN 'placek' ELSE nazwisko,
FROM users
0

Może lepiej powiedz po co Ci takie dziwne zapytanie.
Być może mamy do czynienia z tzw. XY problem.

0

Chcialem uzyc jednego CASE jak w programowaniu zwyklym w c++ ze if costam to dajemy takie pola a else dajemy inne. a tak to musze na kazde pole dac nowy case

0

Aha, czyli problemem jest to, że chcesz żeby SQL wyglądał jak C++. No na to się chyba nic nie poradzi.

0

Tak, ale chodzi bardziej o to ze wtedy jest mniej kodu.Ale pewnie tak sie nie da bo moze bylyby problemy jesli byloby wiecej niz jeden wiersz zwrocony

1 użytkowników online, w tym zalogowanych: 0, gości: 1