Masz tabelki najprosciej mowiąc zaczniemy od dwóch.
Table: USERS
ID |
NICK |
PHONE_NO |
1 |
Sathor |
877678872223 |
2 |
Asha |
252552 |
3 |
Neig |
82878923 |
Z tej tabelki możesz wybrać numer telefonu dla danego użytkownika jeśli znasz jego NICK albo ID zgadza się ?
SELECT * FROM users WHERE id = 1;
SELECT * FROM users WHERE nick = 'SATHOR';
Czasem występują dłuuuuugie nazwy tabel, to dobra praktyka ale żeby sobie ułatwić zadanie ja osobiście dla jednoimiennej tabeli daje 3 litery a dla kilkuimiennej daje początki liter kolejnych nazw. Przykładowa tabela wyżej nazywa sie USERS więć ja robie tak:
SELECT u.* FROM users u WHERE u.id = 2;
SELECT usr.nick, usr.phone FROM users usr WHERE usr.id = 3;
Wszystko jasne mam nadzieję. Teraz poniżej zrobimy tabelke z danymi usera nazwiemy ja:
USERS_DATA
ID |
ID_USERS |
ADDRESS |
CITY |
1 |
1 |
street 13 |
Honolulu |
2 |
2 |
17 street |
San Francisco |
3 |
3 |
22 street |
New York |
Ponieważ tabelka w nazwie ma dwa człony ja zrobiłbym:
SELECT ud.address, ud.city FROM users_data ud WHERE ud.id_users = 3;
Jeżeli tabelki w skrótach się powtarzają to możesz robic 4 pierwsze litery albo jak chcesz nazywać.
Powyższe zapytanie wybierze Ci wiadomo, adres i miasto i wiesz że dotyczy to użytkownika 1. Więc recznie możesz wybrać usera o ID 1 i już znasz jego imie, i telefon. Troche słabe ale zawsze to jakis sposób gdy musisz wybrać 1000 osob przynajmniej tym sposobem masz prace na kilka dni zapewnioną. Teraz jak łączyć tabelki ?
Wybierasz z USERS_DATA wszystkie dane na początek:
SELECT ud.id_users, ud.address, ud.city FROM users_data ud WHERE ud.id = 1;
W pierwszym polu dostaniesz ID_USERS i teraz musisz dołączyć tabelkę. Pytanie jak chcesz połączyć tabelę?
Co ma wspólnego tabela USERS z USERS_DATA , a no ma wspólne id_users i po tym ID musisz je polączyć.
SELECT ud.id_users, ud.address, ud.city, usr.name, usr.phone
FROM users_data ud
JOIN users usr ON (ud.id_users = usr.id)
WHERE ud.id = 1;
Jak widzisz polączyliśmy tabele users która ma id z tabelą users_data ktora ma pole id_users.
Dodaliśmy usr.name, usr.phone no bo to usr żebyś wiedział z jakiej tabeli masz.
Można dać SELECT ud., usr.
Specjalnie dałem "SELECT ud.id_users, ud.address, ud." ale żeby łączyć tabelki nie musisz wybierać tego ud.id_users
możesz spokojnie zrobić:
SELECT ud.address, ud.city, usr.name, usr.phone
FROM users_data ud
JOIN users usr ON (ud.id_users = usr.id)
WHERE ud.id = 1;
I też zadziała. Jeśli chcesz 200 innych tabelek robisz to samo.
Ale dobrą metodą jest wyjęcie danych z jednej tabeli z tym identyfikatorem który jest relacją z inna tabela i potem dołączasz te tabelke wyciągasz dane i potem kolejną i kolejną. Jak juz opanujesz stopieni mistrza mozesz laczyc wszystkie i na koncu zobaczyć co wyjdzie. To tak w skrócie.