Autor Zpráva
inVolt
Profil *
ahoj mám takovej dotaz
mám 3 tabulky
1- user
2- clan
3- clan_members

potřebuju vypsat všechny uživatele, (z tabulky user)
a také zkontrolovat jestli má nějaký clan,popř jaký
takže si vezmu z user jeho ID,to porovnám v clan_members jestli tam je,tak si z tý tabulky vezmu clan_id a ten clan_id pak porovnám s tabulkou clan,kde zjistím jaký clan má.
Zkoušel jsem několik postupu jak toho docílit,ale u všeho mě to nějako ukazovalo špatně
1 zkouška dopadla tak,že dám příklad,mám 10 uživatelu,ten první uživatel má clan např s názvem test
a ten 10 uživatel např test1
tak od prvního uživatele mě to vypsalo až po 9 že jsou všichni v clanu test a ten 10uživatel byl až v tom clanu test1

další script mám udělaný takto
('SELECT * 
                                 FROM users AS us
                                 INNER JOIN clan_members AS cm
                                 INNER JOIN clan AS c');
ale to taky nejde,jelikož mě to u všech vypíše že jsou v clanu test,potřebuji aby když někdo nebude mít clan to nevypsalo nic nebo NONE nebo tak něco

uživatele vypisuju pomocí funkce foreach
Díky za radu
Taps
Profil
inVolt:
důležité je použít ON a propojit cízí klíče s primárními klíči
Tori
Profil
Chybí vám tam, podle čeho se mají jednotlivé tabulky spojovat. Přitom to sám píšete:
vezmu z user jeho ID,to porovnám v clan_members jestli tam je“ ==> users us LEFT JOIN clan_members cm ON us.id = cm.user_id
,tak si z tý tabulky vezmu clan_id a ten clan_id pak porovnám s tabulkou clan“ ==> INNER LEFT JOIN clan c ON cm.clan_id = c.id

Jestli chcete najít pouze uživatele, kteří mají přiřazený nějaký klan, nechte tam INNER JOIN. LEFT JOIN vám vybere všechny uživatele a k nim buď data z dalších tabulek nebo NULL (pokud nemá uživatel přiřazený žádný klan).
Joker
Profil
inVolt:
to taky nejde,jelikož mě to u všech vypíše že jsou v clanu test
Protože tam chybí jakákoliv podmínka.

Ale za prvé, jestli se mají vypsat všichni uživatelé, tak to není inner join, ale LEFT JOIN, jak píše Tori- jen to druhé má taky být LEFT JOIN, protože INNER JOIN by zase vyhodil ty uživatele, kteří nemají žádný klan.
inVolt
Profil *
já když tam dal podmínku nebo ON tak mě to vypsalo pouze ty který ten clan mají,
jak píšete potřebuji vypsat všechny a jenom přiřazovat jestli mají nebo nemají clan,a pak podle id clanu který je v tabulce clan_members zjistit v tabulce clan název clanu.
pokud tam tedy dám left join tak se nic nezměnilo.


jo aha,už jsem to pochopil,díky za radu.už vím zase další věc :)
Tori
Profil
Joker:
to druhé má taky být LEFT JOIN
Dík za opravu, myslela jsem si tam závorky a nenapsala je: users LEFT JOIN (clan_members INNER JOIN clan)

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: