Autor Zpráva
kopi
Profil
Dobrý den,
potřeboval bych poradit s vypisováním vláken v diskuzi. Rád bych, aby vždy nahoře bylo vlákno, ke kterému se váže nejnovější příspěvek.
Mám tabulky diskuse_vlakna a diskuse_prispevky

diskuse_vlakna: id, tema, id_autor, datum
diskuse_prispeky: id, id_tema, id_autor, text, datum

dokážu udělat výpis příspěvků sgrupovaných podle témat, ale už mi nejde to, že když někde přidá příspěvek ke staršímu tématu, tak se dané téma zobrazí nahoře s náhledem nejnovějšího příspěvku.

Chápu, že se k tomu používá JOIN, ale nějak pořád nechápu tu syntaxi spojování tabulek.

Děkuju za každou radu.
Kajman
Profil
Pokud platí, že větší id, znamená větší datum, tak např. takto.

SELECT v.*
FROM   diskuse_vlakna v
       JOIN (SELECT id_tema,
                    Max(id) posledni
             FROM   diskuse_prispeky
             GROUP  BY id_tema
             #ORDER  BY posledni DESC
             #LIMIT  50
             ) p
         ON v.id = p.id_tema
ORDER  BY p.posledni DESC 
kopi
Profil
Kajman:
děkuju. Tohle funguje dobře pro výpis témat, tak jak jsem chtěl. ještě bych rád, aby u každého tématu byl zobrazen nejnovější příspěvek.
dotaz jsem upravil takto:
$vypis = mysql_query ("SELECT v.*
                    FROM   diskuse v
                           JOIN (SELECT id_tema,
                                        text,Max(id) posledni
                                 FROM   diskuse_prispevky
                                 GROUP  BY id_tema
                                 #ORDER  BY posledni DESC
                                 
                                 ) p
                             ON v.id = p.id_tema
                    ORDER  BY p.posledni DESC")

při výpisu se mi ale zobrazují jen výsledky z tabulky diskuse (id, název vlákna, autor, datum). Jak mám ještě vypsat pole "text" z diskuse_prispevky?

while ($zaznam = mysql_fetch_array($vypis))  {

}

přes pole $zaznam[] se to nevypíše.

Děkuji
Kajman
Profil
SELECT v.*,
       dp.text
FROM   diskuse_vlakna v
       JOIN (SELECT id_tema,
                    Max(id) posledni
             FROM   diskuse_prispeky
             GROUP  BY id_tema
             #ORDER  BY posledni DESC
             #LIMIT  50
             ) p
         ON v.id = p.id_tema
       JOIN diskuse_prispeky dp
         ON p.posledni = dp.id
ORDER  BY p.posledni DESC 
kopi
Profil
Kajman:
děkuji, asi jsem to už díky vám pochopil, jak to funguje :) Ještě mám poslední dotaz:
když mám v obou tabulkách sloupec id nebo datum, jak mám rozlišit jejich výpis? Já si vypíšu úryvek příspěvku a k tomu z jakého je to vlákna. Přičemž u úryvku příspěvku je odkaz na celý příspěvek - odkaz má právě parametr "id", a stejně mám i odkaz na "název vlákna" také s parametrem "id", kdy po kliknutí se zobrazí všechny příspěvky ve vláknu.
A právě nevím, jak rozlišit, kdy se v odkazu zobrazi id z tabulky příspěvků a kdy id z tabulky vlákna.
Kajman
Profil
Použijte alias pro kolizní sloupec.

SELECT v.*,
       dp.text,
       dp.datum AS datum_posledniho

AS lze vynechat.

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: