Autor | Zpráva | ||
---|---|---|---|
Player Profil * |
#1 · Zasláno: 24. 4. 2013, 11:53:39
Ahojte mam celekm solidní problém ... nevim jak todleto vyřešit ... potřebuji spojit dvě tabulky přes SQL ... tabulku register_user a friends...
stím že ... z tabulky register_user to vybere data jen toho uživatele jehož id se rovná jednomu ze sloupci v tabulce friends ... ale stím že ještě v jednom tom sloupi musí být moje ID :D ... celkem solidní to je .. vůbec nwm jak to napsat... dalo by se to dělat přes 2 query ... ale chci to nacpat do jednoho... děkuji za radu |
||
tiso Profil |
#2 · Zasláno: 24. 4. 2013, 12:04:43
Daj sem príklad obsahu tých tabuliek a čo chceš aby ti to vrátilo, z tvojho popisu mi to nie je jasné.
|
||
Player Profil * |
#3 · Zasláno: 24. 4. 2013, 12:08:18
vysvětlim to konkrétně :
v tabulce friends jsou sloupce user_one a user_two .... V jednom v tom sloupci může bejt Moje ID ... to je například 10 a vtom druhym je ID jiného uživatele ... a toho potřebuju zjistit data z register_user ... ale problém je v tom že on muže bejt pokaždý v jinym sloupci ... bud v user_one nebo v user_two |
||
juriad Profil |
Jako nejjednodušší řešení mi přijde ukládat do tabulky friends oba směry přátelství, jak:
osobaA -> osobaB osobaB -> osobaA Třeba později využiješ toho, že přátelství může být jednostranné a i když ne, zjednodušíš si dotazy: SELECT u.* FROM register_user u JOIN friends f ON (u.id = f.user_two AND f.user_one = $mojeId) Jinak mě napadá dotaz: SELECT u.* FROM register_user u JOIN ( SELECT f.user_one AS id FROM friends f WHERE f.user_two = $mojeId UNION SELECT f.user_two AS id FROM friends f WHERE f.user_one = $mojeId ) my_friends ON u.id = my_friends.id doplněn alias f u vnitřních selectů
|
||
Player Profil * |
#5 · Zasláno: 24. 4. 2013, 12:25:39
Ten tvuj dotaz vypíše data uživatele co v tabulce přátelství je v jednom z obouch sloupců? Taky potřebuji aby v jednom sloupců bylo i moje ID .. jdu to zkusit :)
|
||
juriad Profil |
#6 · Zasláno: 24. 4. 2013, 12:26:33
Ten druhý ano, ten první předpokládá jednostranná (orientovaná) přátelství.
|
||
Player Profil * |
#7 · Zasláno: 24. 4. 2013, 12:29:54 · Upravil/a: Player
Mě to píše
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION SELECT f.user_two AS id FROM friends WHERE f.user_one = ) my_friends ON' at line 4 mam otázku .. kde jsi vzal my_friends? Ne dobrý vyřešil sem to ... teď to píše jen ... Unknown column 'f.user_one' in 'field list |
||
juriad Profil |
#8 · Zasláno: 24. 4. 2013, 12:36:20
doplněn chybějící alias
my_friends jsem pojmenoval výsledek unionu dvou selectů (tedy tu závorku) |
||
Player Profil * |
#9 · Zasláno: 24. 4. 2013, 12:38:21
Dobře funguje to ... ještě otázku jak do toho dotazu ještě přidat že to vypíše jen ty co mají friends_ok = 1 ..
věděl bych ale bojím se někam to napsat... |
||
juriad Profil |
Friends_ok je sloupec v které tabulce? Pokud v tabulce friends, přidej podmínku do obou vnitřních selectů (na konec řádků 3 a 5); pokud v register_user, předej podmínku až samý na konec dotazu.
Zkus experimentovat, SELECTem nikdy nic nezkazíš :) |
||
Player Profil * |
#11 · Zasláno: 24. 4. 2013, 12:41:39 · Upravil/a: Player
DObrý díky :)
Přidal sem aby mi to vypisovalo tabulku co máš za přátelé ... Incorrect usage of UNION and ORDER BY todle to pak napíš... |
||
Časová prodleva: 11 let
|
0