Autor Zpráva
Bublino
Profil *
Zdravím, mám tabuľku s fotkami, kde mám mimo iné aj FK user_id, album_id, post_id... user_id sa vyplní vždy, album_id len ak užívateľ nahrá fotku do albumu, post_id sa vyplní len ak pridá fotku k príspevku v blogu. Potrebujem spraviť nejaký podmienený SELECT tak, aby keď je vyplnené album_id vytiahne do príslušného riadku album_nazov, ak je vyplnené post_id aby vytiahol názov príspevku, atď(tých FK možno bude trošku viac)... Jednak neviem spraviť jeden taký (asi podmienený) select a taktiež by som bol rád, keby to je optimalizované na čo najlepší výkon. Vďaka... :)
Bublino
Profil *
Uff nejde mi to editnúť. album_id aj post_id(a prípadne aj iné FK) majú defaultnú hodnotu 0 - vtedy sa nemusí pre daný riadok robiť lookup do príslušnej tabuľky, keďže z nej nie sú očakávané dáta. Prípadne ak si to mám zorganizovať inak, nechám si poradiť.
Kajman_
Profil *
Většinou se to řeší přes left join a příslušnou podmínkou.
from fotky left join album on fotky.album_id=album.album_id

U fotek, kde se nanašlo album budou v albumových informacích null hodnoty.
Bublino
Profil *
Vďaka, niečo podobné má napadlo. Nebude však neefektívne prehľadávať pre každý riadok ostatné tabuľky s FK? FK bude pre každý riadok vyplnený len jeden(teda napr. len blog_id alebo album_id). Takto by to vyzeralo:
1) vytiahnem riadok
2) spravím lookup do všetkých tabuliek
3) pripojim podľa potreby

Chcel by som, aby to robilo lookupy do iných tabuliek len v prípade, že príslušný FK je pre danú tabuľku nenulový. Teda asi takto:
1) vytiahnem riadok
2a) ak blog_id je rôzne od nuly, vytiahni príslušný názov blogu
2b) ak album_id je rôzne od nuly, vytiahni názov albumu
2c) ...

Neviem, či sa budú robiť v prvom prípade lookupy so iných tabuliek, keď FK bude nulový alebo či to je optimalizované. Dúfam, ze som môj problém popísal Zrozumitelne :)
mattyZEM
Profil
Nešlo by dát jednoduše WHERE album_id > 0 and blog_id > 0 ?
Bublino
Profil *
Praveze nešlo. Hľadám riadky, kde PRESNE jeden FK je definovaný a s tou konkretnou tabulkou ho spojiť. Tvoja podmienka by v mojom prípade nevratila nič, nakoľko nemoze nastať stav, kedy bude naraz definované aj blog aj album id v jedním riadku.
123456789
Profil *
Pokud album_id/blog_id bude nedefinované, tak by daný sloupec měl obsahovat NULL a ne hodnotu 0. Pak by stačilo to, co psal Kajman_

Nebo to špatně chápu?
Bublino
Profil *
[#7] 123456789

Funguje to tak, ako píšete. Čo je nedefinované, má namiesto čísla nuly NULL a mám tam teda dosť left joinov. Predtým som tam nemal NULL, vďaka za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0