Cum obțin valorile dintr-un singur tabel pe baza relației specificate în altul?

Am un tabel numit user_info care are un cod unic id și informații generale precum title /code>, lastname , number etc.

Am un alt tabel useralias care are două coloane; userid și aliasid .

At the moment I select * from user_info where timestamp > 'a timestamp'.

Cum pot, de asemenea, să adaug la rezultate un duplicat al fiecărei înregistrări user_info pentru fiecare înregistrare useralias în tabelul de alias bazat pe userid timestamp .

Cu excepția faptului că vreau să înlocuiesc codul userid cu id alias pentru aceste înregistrări suplimentare, dar returnez restul detaliilor ca și cum ar fi existat o copie exactă a acelui user_info un id diferit.

0
Nu pot crea un tabel de creare deoarece este microsoft sql, dar tabela user_info arată ca acest nume de utilizator, titlul, primul nume, ultimul nume, e-mail, telefon, mobil, fotografie, marcaj temporal. 1, mr, john, smith, [email protected], 000, 000, server/john.png, 20120105091011 2, mrs, jane, smith, [email protected], 000, 000, server .com/jane.png, 20120105091011 tabela user_alias arată ca acest utilizator_id, alias_id 1, 3
adăugat autor davidelias16, sursa
Ieșirea pe care o vreau ar arăta astfel 1, mr, john, smith, [email protected], 000, 000, server/john.png, 20120105091011 2, mrs, jane, smith, [email protected] .com, 000, 000, server.com/jane.png, 20120105091011 3, mr, john, smith, [email protected], 000, 000, server/john.png, 20120105091011 Este posibil acest lucru cu interogare unică? Mulțumesc
adăugat autor davidelias16, sursa
ARĂTAȚI CREEAZĂ TABUL user_info și useralias
adăugat autor rkosegi, sursa
Puteți edita răspunsul pentru a arăta cum va arăta ieșirea dorită în format tabelar?
adăugat autor davidethell, sursa
Nu pot înțelege întrebarea. Afișează bine rezultatul dorit în format tabelar.
adăugat autor Shaikh Farooque, sursa

1 răspunsuri

Dacă doriți doar pseudonimele și nu numele de utilizator inițial, atunci o simplă conexiune face ceea ce doriți:

select ua.aliasid, 
from user u join
     useralias ua
     on u.userid = ua.userid

Dacă doriți atât utilizatorii, cât și pseudonimele, atunci trebuie să măriți masa la care vă alăturați:

select ua.aliasid, 
from user u join
     (select userid, aliasid
      from ((select userid, aliasid
             from useralias ua
            )
            union all
            (select userid, userid as aliasid
             from user
            )
           ) t
     ) ua
     on u.userid = ua.userid

Această interogare creează o listă de perechi de ID-uri de utilizator și ID-uri alias și, de asemenea, adaugă în toate ID-urile de utilizatori existente. Când te alături, vei primi înregistrările originale. Ați putea, de asemenea, să faceți acest lucru cu două interogări separate conectate printr-o conexiune.

0
adăugat
Ey Gordon, ești o armă. Mi-a rezolvat problema perfect. Cred că am probleme cu capul în jurul valorii de folosind selectează în selectează și să se alăture în totalitate. Multumesc morminte.
adăugat autor davidelias16, sursa
Al doilea, deoarece aveam nevoie atât de un rezultat
adăugat autor davidelias16, sursa
Apropo, care este problema pe care încercați să o rezolvați?
adăugat autor Gordon Linoff, sursa
MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.