Autor | Zpráva | ||
---|---|---|---|
Bublino Profil * |
#1 · Zasláno: 14. 2. 2010, 00:01:57
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 * |
#2 · Zasláno: 14. 2. 2010, 00:04:00
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 * |
#3 · Zasláno: 14. 2. 2010, 11:34:31
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 * |
#4 · Zasláno: 14. 2. 2010, 13:29:33
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 |
#5 · Zasláno: 14. 2. 2010, 13:37:51
Nešlo by dát jednoduše WHERE album_id > 0 and blog_id > 0 ?
|
||
Bublino Profil * |
#6 · Zasláno: 14. 2. 2010, 14:12:48
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 * |
#7 · Zasláno: 14. 2. 2010, 15:52:23
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? |
||
Časová prodleva: 3 dny
|
|||
Bublino Profil * |
#8 · Zasláno: 17. 2. 2010, 17:31:47
[#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. |
||
Časová prodleva: 13 let
|
0