Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie wartosci dla danego uzytkownika i wstawianie do bazy danych
Forum PHP.pl > Forum > Bazy danych > MySQL
arfer
Witam

Mam w bazie danych 3 tabele:
- uzytkownicy zawierajacą id uzytkownikow i odpowiednie dla nich imiona
- zespoly zawierającą id zespolów i odpowednie dla nich nazwy
- wyniki zawierajace kolumne do wpisania id uzytkownika id zespolu i jakiegos wyniku

Do tabeli wyniki wpisuje id wybranego uzytkownika oraz id zespolu dla ktorego jest w danym momencie przypisany i jakis wynik. Na tej podstawie tworzonych jest kilkaset wynikow z ktorych potem w wybrany przez siebie sposob moge tworzyc konkretne zestawienia np jacy uzytkownicy byli w jakich zespolach itd. Jeden uzytkownik w danym momencie moze byc tylko w jednym zespole ale z czasem moze go zmienic dlatego nie moge przypisac mu stalego id zespolu w tabeli uzytkownicy bo czasem on sie zmienia dlatego kazdorazowo przy wpisywaniu wynikow oprocz id uzytkownika podaje takze id zespolu. Problem jest taki ze uzytkownicy bardzo rzadko zmieniaja zespoly w konsekwencji za kazdym razem przy wpisywaniu wynikow musze przypisywac kazdemu uzytkownikowi ten zespol co przy duzej liczbie wynikow jest meczace. Chcialbym to zatem lekko zmodyfikowac aby dodajac wyniki do bazy automatycznie przypisywany byl ustalony dla danego uzytkownika jego zespol. Jedyna mozliwoscia ktora widze jest stworzenie nowej kolumny w tabeli uzytkownicy z wartoscia id zespolu. Dodajac nowego uzytkownika wpisywalbym mu na stale id zespolu i on automatycznie bylby wstawiany do bazy razem z uzytkownikiem. Jesli zespol zmienilby sie wtedy edytowalbym tego uzytkownika zmieniajac mu id zespolu i przy wpisywaniu kolejnych wynikow do bazy trafialoby juz nowe id zespolu. Czy ktos moglby mi pomoc w sformulowaniu zapytania ktore by pobieralo id zespolu danego uzytkownika ktoremu wpisuje wynik i wstawialo do bazy danych wyniki?
bostaf
  1. SET @id_usera = 1; -- tak zrobię, ale czy to zrobisz zmienną PHP czy inaczej to nie ma znaczenia
  2. SET @wynik = 123; -- to też znamy - wpisuje się w formularzu wprowadzania danych
  3. INSERT INTO wyniki (id_uzytkownika, id_zespolu, wynik)
  4. VALUES (
  5. @id_usera,
  6. (SELECT id_zespolu FROM uzytkownicy WHERE id_uzytkownika = @id_usera),
  7. @wynik
  8. );

Sztuczka polega na tym, że INSERTując możesz pobierać dane z innych tabel.
mmmmmmm
  1. INSERT INTO wyniki (id_uzytkownika, id_zespolu, wynik)
  2. SELECT @id_usera, id_zespolu, @wynik FROM uzytkownicy WHERE id_uzytkownika = @id_usera;
bostaf
Cytat(mmmmmmm @ 9.10.2012, 23:45:21 ) *
  1. INSERT INTO wyniki (id_uzytkownika, id_zespolu, wynik)
  2. SELECT @id_usera, id_zespolu, @wynik FROM uzytkownicy WHERE id_uzytkownika = @id_usera;

Taaaaa... jak popatrzyłem na swoja propozycję wyżej to pomyślałem "co za osiołek to napisał".
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.