Autor Zpráva
Bublino
Profil *
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 *
Tabulkam v klauzuli FROM muzete priradit aliasy. Takze dvakrat joinete tabulku uzivatele, pricemz alespon jedna bude mit prirazen alias.
TomášK
Profil
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ší.

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