Mam tabelke o nazwie dziobas
id | rodzaj |
---|---|
1 | 1 |
2 | 3 |
Jak teraz dodac zapytanie w stylu
SELECT *, CASE WHEN rodzaj = 1 THEN select * from druga_tabelka where id = rodzaj ELSE inny select END FROM dziobas
Da sie tak zrobic w ogole ?
Mam tabelke o nazwie dziobas
id | rodzaj |
---|---|
1 | 1 |
2 | 3 |
Jak teraz dodac zapytanie w stylu
SELECT *, CASE WHEN rodzaj = 1 THEN select * from druga_tabelka where id = rodzaj ELSE inny select END FROM dziobas
Da sie tak zrobic w ogole ?
Tak, da się. Normalnie walisz tam subquery. Aczkolwiek takie zapytanie to kijowy pomysł.
daj może rzeczywiste tabele i co chcesz osiągnąć
Sam pomysł robienia tego w case jest bez sensu, pójdź raczej w cos takiego
SELECT
*
,ISNULL(KOLUMNADLARODZAJ1,KOLUMNADLARODZAJROZNEGO1)
FROM
dziobas
LEFT JOIN (Select KOLUMNADLARODZAJ1 FROM DRUGA_TABELA WHERE ID = 1) T2 ON T2.ID = DZIOBAS.RODZAJ
LEFT JOIN (SELECT KOLUMNADLARODZAJROZNEGO1 FROM INNATABELA) TI ON TI.ID=DZIOBAS.IS
Hmm wiem do czego zmierzasz. Ale ja mam tabele w ktorej mam RODZAJ i jest tam albo 1 albo 2
Jezeli jest tam 1 to mam wybrac cos z innej tabeli
a jezeli jest 2 to mam wybrac cos z jeszcze innej tabeli
Chodzi o to ze w tych innych tabelach nie ma tego RODZAJu
czyli musze jakos rozroznic ten RODZAJ i w zaleznosci od niego
dolaczac subquery albo z jednej albo z drugiej tabeli
Możesz dać subquery otaczajac w nawias, ale mam wrażenie ze kombinujesz w złym kierunku. Pokaz przykład danych i oczekiwany efekt a będzie można pomóc
Tabelka ORDERS
id | id_przedmiot | rodzaj | id_users
---------------- | -------------------
1 | 100 | 1 | 1
2 | 123 | 2 | 4
3 | 153 | 2 | 1
Tabelka USERS
id | imie | nazwisko
---------------- | -------------------
1 | Maciek | Jackowski
2 | Asia | Michalska
Tabela przedmiot
id | nazwa | id_users_owner
---------------- | -------------------
153 | Miska | 2
1233 | Stołek | 6
Zapytanie chcialem takie
WYBIERZ id, rodzaj z tabeli ORDERS SPRAWDZ rodzaj jezeli rodzaj jest = 1 TO wybierz nazwe uzytkownika z tabeli USERS a jesli rodzja = 2 to wybierz nazwe uzytkownika z tabeli USERS ale jego id ma byc z tabeli PRZEDMIOT
wynik ma byc taki:
id orders | rodzaj | imie
---------------- | -------------------
1| 1| Maciek
1| 2| Aska
W pierwszym Maciek bo rodzaj byl = 1 to bralem id usera z tabeli users
W drugim wyszla Aska bo byl rodzja = 2 to bralem uzytkownika jako wlasciciela przedmotu
select o.id id_orders, o.rodzaj, case o.rodzaj when 1 then u.imie when 2 then up.imie end imie from orders o left join users u on (o.id_users=u.id) left join przedmiot p on (o.id_przedmiot=p.id) left join users up on (p.id_users=up.id)