• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak połączyć drugą tabelę w MySql z pierwszą?

Object Storage Arubacloud
0 głosów
1,884 wizyt
pytanie zadane 20 lipca 2015 w PHP przez Mr Popcorn Bywalec (2,340 p.)

Kłaniam się z góry, jak rzadko który, witam i o zdrowie pytam.
Moja prośba do Was oparta jest na drugim kursie PHP Mirosława Zelenta,
http://miroslawzelent.pl/kurs-php/logowanie-do-strony-sesja-wstrzykiwanie-sql/
w którym to stworzyliśmy grę przeglądarkową "Osadnicy".
Utworzyłem drugą tabelę o nazwie "zbrojmistrz" i potrzebuję połączyć ją z tabelą "users" tak,
aby po zalogowaniu dana osoba widziała, jakie i ile broni i zbroi posiada.
Jak powinna wyglądać tabela "zbrojmistrz"?
Jak wyświelić, nie wszystkie dostępne, a tylko te zakupione elementy z bazy danych?
Bardzo proszę o pomoc.

Z góry dziękuje.
Pozdrawiam serdecznie.
Mr_Popcorn

2 odpowiedzi

+1 głos
odpowiedź 20 lipca 2015 przez Magicone Nałogowiec (45,100 p.)

Przykładowe tabele:

users: [*id|nick|login|passwd]

zbrojmistrz: [*id, **uid, prop1, prop2]

legenda: * -> klucz podstawowy, ** -> klucz unikalny

relacje tworzymy w następujący sposób:

ALTER TABLE zbrojmistrz ADD FOREIGN KEY(uid) REFERENCES users(id)

i pobieranie prop1 i prop2 wygląda następująco:

SELECT zbrojmistrz.prop1 as prop1, zbrojmistrz.prop2 as prop2 FROM users LEFT JOIN zbrojmistrz ON zbrojmistrz.uid = users.id

chyba tyle :D

_

Co do kupionych towarów, pokaż, jak wygląda struktura tabeli - wtedy wszystko ci wyjaśnie :)

komentarz 20 lipca 2015 przez Boshi VIP (100,240 p.)

A gdzie ja napisałem, że  im mniej tym lepiej ?  ja odnosiłem się do postu Tnifey , bład że nie  oznaczyłem tego.

propozycja commandera wydaje się najrozsądniejsza wg mnie. Daje to największą elastyczność.

 

komentarz 20 lipca 2015 przez Tnifey Pasjonat (24,190 p.)
To jest bardzo nieoptymalne, ale naprostrze jakie może być :) Widzę, że teraz się zaczyna od wrzucenia na głęboką wodę :) Mr_Popcorn chciał poprostu, żeby mu działało. To że napiszecie że potrzeba jest użyć kluczy obcych, nie mówiąc do czego one służą i jak działają, tylko mówiąc krótko - Weź ten talizman, rzuciłem na niego urok działania - i gdy odpala ten "talizman" to działa, tylko nie wie jak i co dokłanie.
komentarz 20 lipca 2015 przez Boshi VIP (100,240 p.)
To już sobie doczyta na internecie.
komentarz 20 lipca 2015 przez Magicone Nałogowiec (45,100 p.)
Hm, innym rozwiązaniem jest użycie SELECT w SELECT, natomiast wątpię, czy będzie to lepszym rozwiązaniem, być może bardziej intuicyjnym :)
komentarz 20 lipca 2015 przez Comandeer Guru (601,510 p.)
Ale niewydajne jeszcze bardziej ;)

W PostgreSQL zamiast 3 tabel byłby typ array.
0 głosów
odpowiedź 22 lipca 2015 przez Mr Popcorn Bywalec (2,340 p.)

Na screenshotach widzicie zdjęcia moich tabel w bazie danych, oraz niby grę o którą się rozchodzi, statystyki miałyby być widoczne na każdej podstronie, tabela z brońmi wyciągnęłaby wszystkie dane z tabeli "weapons",  a widoczna byłaby w zakładcy np "zbrojmistrz", albo "sklep", a ostatnia tabela pokazywałaby, jaką broń mamy obecnie kupioną.

Bardzo proszę o instrukcję (o wyjaśnienie jak dziecku), jak krop po kroku zrobić, aby w zakładce "ekwipunek" widniała zakupiona broń od aktualnie zalogowanej osoby.
Z góry dziękuje.

 



Gdyby zdjęcia były za małe, to tu odnośniki do screenshotów:
http://i.imgur.com/hJYhV8r.png
http://i.imgur.com/I8Yo4bo.png

komentarz 23 lipca 2015 przez Comandeer Guru (601,510 p.)

Najłatwiej będzie zrobić trzecią tabelę equipment z dwoma polami: user i weapon. Będą one przechowywać id odpowiednio z tabeli userów i tabeli broni. Mając taką tabelę wiadomo jakie bronie ma user o danym id.

Jeśli chcesz pobrać taką broń wraz z danymi o niej należy zastosować JOIN w zapytaniu:

SELECT weapons.* FROM weapons JOIN equipment
ON weapons.wid = equipment.weapon
WHERE equipment.user = id_z_sesji

 

Podobne pytania

0 głosów
1 odpowiedź 1,799 wizyt
pytanie zadane 5 lutego 2018 w PHP przez Śwież4k Bywalec (2,570 p.)
0 głosów
1 odpowiedź 127 wizyt
pytanie zadane 12 listopada 2015 w SQL, bazy danych przez Piotrek Karasiński Obywatel (1,870 p.)
0 głosów
1 odpowiedź 3,544 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...