Autor | Zpráva | ||
---|---|---|---|
Meldo Profil |
Zdravim, potreboval by som poradit s jednym mysql prikazom.
Mam jednu tabulku, kde mam registrovanych uzivatelov. Kazdy ma jedinecne id. Tabulka sa vola users_login. Potom mam dalsie 4 tabulky, kde su dalsie data k uzivatelom. Su to tabulky: girls, boys, babies, pets. No a co potrebujem. Chcem vyhladat vsetkych uzivatelov, ktory maju v tabulke girls, alebo boys atd. nejaku hodnotu. Napriklad je tam krajina. Cize som si spravil taketo volanie: SELECT users_login.id FROM users_login, girls_users, boys_users, babies_users, pets_users WHERE users_login.id = girls_users.id_login AND users_login.id = boys_users.id_login AND users_login.id = babies_users.id_login AND users_login.id = pets_users.id_login AND girls_users.krajina = 'SK' AND boys_users.krajina = 'SK' AND babies_users.krajina = 'SK' AND pets_users.krajina = 'SK' ale akosi mi to nefunguje, nevracia to ziadne vysledky, aj ked by malo :) Nejaky napad ako to vylepsit, alebo kde je chyba? |
||
Joker Profil |
#2 · Zasláno: 30. 7. 2012, 15:34:45
Meldo:
Ten uvedený dotaz vybere takový řádek, který (se stejným ID) existuje ve všech uvedených tabulkách a zároveň má ve všech nastavené krajina='SK'. Což asi nebyl záměr. Já bych ale v první řadě začal otázkou: Proč jsou vlastně ta data rozdělena do čtyř tabulek? |
||
Meldo Profil |
#3 · Zasláno: 30. 7. 2012, 15:50:37
Zamer to nebol. Ako to teda upravit. Skusam OR ale bezvysledne...
No rozdelene su preto, pretoze kazdy typ uzivatela ma ine parametre. Kazdopadne, teraz sa s tym uz nic neda robit, musim pracovat s tym, ako to je. |
||
Kajman Profil |
Šťastně ten návrh nemáte, ale možná půjde něco takového...
SELECT users_login.id FROM users_login LEFT JOIN girls_users ON users_login.id = girls_users.id_login AND girls_users.krajina = 'SK' LEFT JOIN boys_users ON users_login.id = boys_users.id_login AND boys_users.krajina = 'SK' LEFT JOIN babies_users ON users_login.id = babies_users.id_login AND babies_users.krajina = 'SK' LEFT JOIN pets_users ON users_login.id = pets_users.id_login AND pets_users.krajina = 'SK' WHERE ( girls_users.id_login IS NOT NULL OR boys_users.id_login IS NOT NULL OR babies_users.id_login IS NOT NULL OR pets_users.id_login IS NOT NULL ) |
||
Meldo Profil |
#5 · Zasláno: 30. 7. 2012, 16:17:42
Ok diky Kajmane. Vyzera to, ze nieco z toho bude :)
A pre buducnost, ako riesit ten navrh DB? |
||
Časová prodleva: 12 let
|
0