Autor Zpráva
Player
Profil *
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
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 *
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
tak i
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 *
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
Ten druhý ano, ten první předpokládá jednostranná (orientovaná) přátelství.
Player
Profil *
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
doplněn chybějící alias
my_friends jsem pojmenoval výsledek unionu dvou selectů (tedy tu závorku)
Player
Profil *
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 *
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íš...

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:

0