Autor | Zpráva | ||
---|---|---|---|
inVolt Profil * |
#1 · Zasláno: 6. 7. 2014, 16:17:48
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'); uživatele vypisuju pomocí funkce foreach Díky za radu |
||
Taps Profil |
#2 · Zasláno: 6. 7. 2014, 16:44:18
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“ ==>
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 |
#4 · Zasláno: 6. 7. 2014, 16:50:44
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 * |
#5 · Zasláno: 6. 7. 2014, 17:17:54 · Upravil/a: inVolt
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 |
#6 · Zasláno: 6. 7. 2014, 17:32:58
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)
|
||
Časová prodleva: 10 let
|
0