Autor Zpráva
G3n3sis19
Profil
Nechápu to. Mám 2 tabulky

s1_user - ta má položku cid
s1_clan - ta má položku short_name

SELECT SQL_CACHE u.id, u.username, u.cid as cid, (SELECT SQL_CACHE name_short FROM s1_clan WHERE id = u.cid) as name_short FROM s1_user as u, s1_clan as c ORDER BY id desc LIMIT 0, 10

ale když mám v s1_clan nulový počet řádků, vrátí mi nulový počet řádků i ten zbytek. Jak to?
Tori
Profil
G3n3sis19:
FROM s1_user as user, s1_clan as clan
Čárka mezi jmény tabulek je totéž jako INNER JOIN - vrátí pouze ty řádky z tabulky user, kterým odpovídá řádek v tabulce clan.
G3n3sis19
Profil
sorry, s INNER JOINem sem nikdy neudělal. jak to mám tedy provést?
Tori
Profil
SELECT u.id, u.username, u.cid, c.name_short 
FROM s1_user u LEFT JOIN s1_clan c ON u.cid = c.id 
ORDER BY u.id desc LIMIT 0, 10 
Pokud v tabulce s1_clan není odpovídající řádek, bude pod name_short hodnta NULL. (Nevím, jestli se ten sloupec jmenuje name_short nebo short_name, to si zkontrolujte.)
PS: Nemám zkušenost s používáním SQL_CACHE, takže jsem to tam nedala.

Ještě k nadpisu vlákna: nezpůsoboval to poddotaz, ale to spojení tabulek.

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: