Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Łączenie tabel w phpMyAdmin
Forum PHP.pl > Forum > Przedszkole
soldiernr1
Witam, mam tabele 1 (użytkownicy) teraz potrzebuje tabelę w której będą archiwizowane typy wybrane przez uzytkowników (mam tu na mysli TYP: 1,X lub 2 oraz wynik meczu) do tego stworzyłem tabelę2 . Nie wiem jak je połączyć w phpMyAdmin stowrzyłem do połączenia tych tabel zapytanie. Prosze o sprawdzenie i ewentualne poprawki co do tabel i zapytania oraz wskazówki jak to ogarnąć w phpMyAdmin

Tabela1:
Kod
CREATE TABLE `uzytkownicy` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT,
`nazwisko` VARCHAR( 32 ) NOT NULL ,
`nick` VARCHAR( 32 ) NOT NULL ,
`haslo` VARCHAR( 40 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`ip`INT ( 15 ) NOT NULL ,
PRIMARY KEY ( `id` )
);



Tabela2:
Kod
CREATE TABLE `typowanie` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nick` VARCHAR( 32 ) NOT NULL ,
`typ` VARCHAR( 1 ) NOT NULL ,
`wynik` VARCHAR( 5 ) NOT NULL ,
`czas` INT( 5 ) NOT NULL ,
`ip`INT ( 15 ) NOT NULL ,
PRIMARY KEY ( `nick` )
);



(Jesli dobrze pamiętam, to aby powiązac dwie tabele to muszą one miec tyle samo kolumn)
Kod
SELECT a.nazwisko, a.nick , a.haslo, a.email, a.ip, b.nick, b.typ, b.wynik, b.czas, b.ip
from uzytkownicy a, typowanie b
where a.id=b.id;
peter13135
Co to znaczy "łączyć" tabelę ? W jaki sposób i po co chcesz je łączyć ? Czemu niby mają mieć tą samą liczbę kolumn ?
kamil_lk
Ja bym to zrobił tak:

  1. CREATE TABLE `uzytkownicy` (
  2. `id_uzytkownika` INT( 11 ) NOT NULL AUTO_INCREMENT,
  3. `nazwisko` VARCHAR( 32 ) NOT NULL ,
  4. `nick` VARCHAR( 32 ) NOT NULL ,
  5. `haslo` VARCHAR( 40 ) NOT NULL ,
  6. `email` VARCHAR( 255 ) NOT NULL ,
  7. PRIMARY KEY ( `id_uzytkownika` )
  8. );


  1. CREATE TABLE `wyniki` (
  2. `id_wyniku` INT( 11 ) NOT NULL AUTO_INCREMENT,
  3. `wygrana` INT( 1 ) ,
  4. `remis` INT( 1 ) ,
  5. `przegrana` INT( 1 ) ,
  6. PRIMARY KEY ( `id_wyniku` )
  7. );


Tabela `wyniki` posiada trzy wpisy z wartościami:

  1. 0 | 1 | 0
  2. 1 | 0 | 0
  3. 0 | 0 | 1


  1. CREATE TABLE `typy` (
  2. `id_typu` INT( 11 ) NOT NULL AUTO_INCREMENT,
  3. `id_wyniku` INT( 1 ) NOT NULL ,
  4. `id_uzytkownika` INT( 1 ) NOT NULL,
  5. PRIMARY KEY ( `id_typu` )
  6. );


Aby wybrać dane użytkownika wraz z jego typem należy użyć zapytania:
  1. SELECT u.nazwisko, u.nick, w.id_wyniku
  2. FROM uzytkownicy u, wyniki w, typy t
  3. WHERE u.id_uzytkownika=t.id_uzytkownika
  4. AND w.id_wyniku=t.id_wyniku


Następnie sprawdzasz czy id_wyniku == 1(remis), id_wyniku == 2(wygrana pierwszej drużyny), id_wyniku ==3(wygrana drugiej drużyny) i przypisujesz odpowiednią wartość podaną w nawiasie
soldiernr1
Cytat
Następnie sprawdzasz czy id_wyniku == 1(remis), id_wyniku == 2(wygrana pierwszej drużyny), id_wyniku ==3(wygrana drugiej drużyny) i przypisujesz odpowiednią wartość podaną w nawiasie
Możesz mi to bardziej wyjaśnić?
Proszę jeszcze o wyjaśnienie, jak zrobić by poniższe zapytanie:
  1. SELECT u.nazwisko, u.nick, w.id_wyniku
  2. FROM uzytkownicy u, wyniki w, typy t
  3. WHERE u.id_uzytkownika=t.id_uzytkownika
  4. AND w.id_wyniku=t.id_wyniku

zostało wprowadzone do phpMyAdmin tak by wykonywało się cały czas (czyli na stałe). A może to zapytanie w formie kodu php powinienem wstawić w miejscu na stronie w którym powinny wyświetlac sie pobierane dane??
jumbo
Cytat
Ja bym to zrobił tak:

A czy mógłbyś do całości dodać tabelę `rezultat` i stworzyć zapytanie które wyświetliłoby dodatkowo rezultat (dokładny wynik meczu) na stronie?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.