Autor | Zpráva | ||
---|---|---|---|
Bublino Profil * |
#1 · Zasláno: 11. 2. 2010, 23:25:02
Zdravím,
tak som trošku zas pokročil a mám problém aktuálne s týmto: Mám tabuľku "priatelia" v ktorej sa nachádza userId1, userId2, flag prijate a tabuľku uzivatelia (userId, nickname, flag fotkaProfilu). Chcel by som v jednom query vytiahnúť mojich priateľov. To robím tak, že robím SELECT s podmienkou WHERE userId1 = mojeId OR userId2 = mojeId... V PHP už tie IDčka príslušne spracujem. Potrebujem však pre každý riadok vytiahnúť aj username pre oboch userId1 aj userId2 z tabuľky uzivatelia(kde userId je primárny kľúč) a taktiež aj pre príslušných dvoch užívateľov aj flash fotkaProfilu(as fotkaProfilu1, fotkaProfilu2). Žiaľ, nemám ani šajn ako to pojoinovať :( Ocením každú radu, najmä takú, ktorá priamo vyrieši môj problém ale rád by som zistil aj nejaké "best practice" ohľadom priateľstiev(ako ich ukladať atď - moje riešenie sa mi príliš nepozdáva - no takmer funguje :)). Vďaka. |
||
123456789 Profil * |
#2 · Zasláno: 12. 2. 2010, 10:53:40
Tabulkam v klauzuli FROM muzete priradit aliasy. Takze dvakrat joinete tabulku uzivatele, pricemz alespon jedna bude mit prirazen alias.
|
||
TomášK Profil |
#3 · Zasláno: 12. 2. 2010, 14:31:23
Kromě struktury, kterou používáte, je ještě možné mít strukturu:
uzivatele(user_id) priatelstvo(priatelstvo_id) uzivatele_priatelstvo(user_id, priatelstvo_id, ) Zjednodušší to některé dotazy, zvlášť pokud bude v tabulce uzivatele_priatelstvo další sloupce, ve kterých se bude něco hledat, tohle je např. dotaz na přátele: SELECT * FROM uzivatele JOIN uzivatele_priatelstvo AS up1 ON up1.user_id = uzivatele.user_id JOIN uzivatele_priatelstvo AS up2 ON up2.priatelstvo_id = up1.priatelstvo_id AND up2.user_id != up1.user_id JOIN uzivatele AS pratele ON up2.user_id = pratele.user_id Neříkám, že je to lepší řešení - je to prostě alternativa. Můžeš vyzkoušet, co bude rychlejší. |
||
Časová prodleva: 13 let
|
0