Załóżmy że mam 3 tabele: A, B i C. Tabela A posiada pole `type` które ma wartość 0 lub 1. Jeśli wartość pola A.`type` wynosi 0 chciałbym pobierać wszystkie dane z tabeli B, natomiast jeśli 1, z tabeli C, czyli coś w tym rodzaju:
Kod:
SELECT A.`type`, (SELECT * FROM IF(A.`type`=0;'B','C') WHERE `id`=1 LIMIT 1) FROM A WHERE A.`id`=5
Mam to obecnie rozwiązane w PHP, jednak zastanawiałem się, czy nie dałoby się tego utworzyć w jednym zapytaniu. Przy tego typu kodzie wyskakuje mi błąd składni czy coś w tym stylu. Chciałbym uniknąć stosowania UNION czy JOIN, bo przy większej ilości rekordów raczej będzie to wolniejsze niż rozwiązanie problemu za pomocą PHP.
A propos - w tabelach B i C znajdują się pola podobne do A.`type` jednak mają inne nazwy. Mimo to dla odpowiednika pola A.`type` w tabeli B wszystkie wartości wynoszą 0, a dla tabeli C 1.
Zakładki