Autor Zpráva
david80
Profil
Ahoj, prosím vás o radu, mám v db tabulku "pratele" a tabulku "zpravy",
V tabulce pratele mám sloupec "uzivatel" a "pritel" a v tabulce zpravy je "uzivatel", "datum" a "text"
Myslel jsem si že to bude hračka, ale už se s tím trápím 3 dny, vymysle jsem to takhle, nejdřív si SELECTem vypíšu všechny mé přátele a pak ty přátele zapíšu proměnou do dalšího SELECT jako WHERE ale nemůžu přijít na to, jak to takhle udělat hlavně proto, že počet přátel se může měnit a pak taky potřebuju vypsat i zprávy, co jsem napsal já a ještě je seřadit podle datumu.
Bertram
Profil
Asi jsem natvrdlí, ale co to vlastně chcete v tom dotazu vrátit z databáze?
Joker
Profil
SELECT sloupce FROM uzivatel u JOIN pritel p ON p.uzivatel=u.id  JOIN zpravy z ON z.odesilatel=p.pritel
Nějak takhle, záleží na tom, jak přesně jsou organizované ty tabulky.
david80
Profil
Bertram:
Omlouvám se, napsal jsem to do nadpisu, ale to textu už ne. Potřebuju vypsat zprávy jen od lidi, které mám v přátelích.

Joker:
Ať to zkouším jak chci, tak mám pocit, že to není přesně to, co by mi fungovalo. Mám 2 tabulky, jednu pro zprávy a jednu pro přátelství a pak ještě tabulku pro registraci uživatelů, ale ta už není důležitá, protože po přihlášení se uloží session se jménem a ID, takže jen potřebuju ke známému jménu uživatele přiřadit přátele a k těm přátelům pak zprávy co odeslaly a ty vypsat.
Zprávy mám v jiné tabulce, kde jsou sloupce - id,datum, odesilatel, text
Tabulka kde jsou přátelé má zas sloupce - id,uzivatel,pritel

V tom co jste mi napsal jsem nenašel tabulku "pratele", tabulku "zpravy" jo.
Bertram
Profil
Já to přehlédl, slepoň :-)
Možná něco z tohoto, ale chce to vědět i něco o charakteru těch tabulek.

SELECT pritel,datum,text FROM pratele,zpravy WHERE zpravy.uzivatel = pratele.uzivatel AND pratele.pritel = bool ORDER BY datum";

SELECT pritel,datum,text FROM pratele,zpravy WHERE pratele.uzivatel =   AND zpravy.uzivatel = pratele.uzivatel ORDER BY datum";
Joker
Profil
david80:
V tom co jste mi napsal jsem nenašel tabulku "pratele", tabulku "zpravy" jo.
je tam pritel, jinak samozřejmě já neznám konkrétní strukturu a názvy sloupců, takže je potřeba upravit podle situace.

Ale se známým ID uživatele to je ještě jednodušší- napíšu tabulky textově, šedé části je potřeba upravit podle situace:
SELECT sloupce FROM tabulka přátel p JOIN tabulka zpráv z ON z.id_odesilatele = p.id WHERE p.uzivatel = ID uživatele

Bertram:
Lepší je udělat rovnou spojení tabulek podle podmínky (JOIN ON), než udělat kartézský součin (všechny kombinace) a z něj pak ty řádky vybírat.
david80
Profil
Bertram:
Díky, super, ten druhý select jsem si poupravil aby odpovídal charakteru tabulek a už funguje tak jak jsem si přál, díky :-)
Jsem nevěděl, že se to dá takhle hezky spojovat, tak jsem zase o něco chytřejší :-)
david80
Profil
Joker:
Ještě to skusím udělat vaším způsobem. Taky díky za ochotu, moc jste mi oba pomohli :-)

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: