Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> typ danych SET ?
falkor
post 11.04.2005, 21:36:08
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


MAm pytanie.Potrzebuje by wbazie w polu byly przechowywane dwie wartosc; 1 i 2.Poniewaz maja byc jednoczesnie, typem odpowiednim bedzie set,bowiem enum dopuszcza tylko jedna wartosc ze zdefiniowanej listy.Moje pytanie jest takie:czy jesli pobierajac dane z bazy w warunku WHERE wystapi pole = '1', baza zwroci mi ten rekor nawet jesli oprocz 1 tkwi tam jeszcze 2? Prosilbym o jakis fragment kodu jak wygladaloby najprostsze zapytanie z uzyciem tego typu (SET) oraz jak modyfikowac takie pole zmieniajac tylko jedna z wartosci poprzez UPDATE.Dziekuje!!!

Ten post edytował falkor 11.04.2005, 21:37:11
Go to the top of the page
+Quote Post
SongoQ
post 11.04.2005, 21:49:54
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


  1. SELECT pole
  2. FROM tabela WHERE pole_set = '1'


Zwroci tylko te wartosci gdzie jest 1

  1. UPDATE tabela
  2. SET pole_set = '2'
  3. WHERE id = ...


--------------------
Go to the top of the page
+Quote Post
falkor
post 11.04.2005, 22:08:17
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


no tak ale jak np mam w takim polu 1 i 2 i teraz UPDATE'em chce zmienic 2 na 3 to czy 1 wciaz tam bedzie i skad on wie ze chce zmienic 2 na 3 a nie 1 na 3? W polu zawsze musi byc 1 i inna liczba ktora zmieniam...czy to sie da zrobic tym typem?

Ten post edytował falkor 11.04.2005, 22:10:11
Go to the top of the page
+Quote Post
SongoQ
post 11.04.2005, 22:17:48
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


  1. UPDATE tabela
  2. SET pole_set = '1, 2'
  3. WHERE ............


Pole set modyfikujac musisz podac wszystkie wartosci


--------------------
Go to the top of the page
+Quote Post
falkor
post 11.04.2005, 22:41:58
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


Nie chce dzialac...
Mam taka kwerende
  1. SELECT KwotaLokaty,RodzajLokaty,DataZalozeniaLokaty
  2. FROM logowanie,klienci_konta,lokaty WHERE Identyfikator = '".$_SESSION['MM_Username']."' AND Haslo = '".$_SESSION['MM_UserPassword']."' AND StatusLokaty = '".$StatusLokaty."' AND logowanie.NrKlienta = klienci_konta.NrKlienta AND klienci_konta.NrKonta = lokaty.NrKonta


$StatusLokaty przyjmuje 1 lub 2 lub 3 lub 4

w bazie tkwia trzy rekordy z wartosciami pola typu set rownymi 1,2.
Wlecialy tam ta oto kwerenda:
  1. INSERT
  2. INTO lokaty VALUES(NULL,'".$NrKonta."','".$KwotaLokaty."','".$RodzajLokaty."','".$RodzajOprocentowania."',
  3. '".$OkresLokaty."','".$SposobZadysponowaniaLokata."','".$DataZalozeniaLokaty."','".$Zleceniodawca."','1,2')";


Prosze o pomoc bo nie wiem co jest zle...

Ten post edytował falkor 11.04.2005, 22:43:21
Go to the top of the page
+Quote Post
SongoQ
post 11.04.2005, 22:56:57
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Wyciagasz tak samo jak wkladales rekordy.

  1. SELECT pole
  2. FROM tabela WHERE pole_set = '1,2' AND .............


Hm moze jest inny sposob ale nie chce mi sie szukac w manualu, bo tak naprawde to typ set jest to raczej wymysl MySQLa


----------
No i zachcialo mi sie i znalazlem:

  1. SELECT pole
  2. FROM tabela WHERE FIND_IN_SET('1', pole_set) > 0 AND .........


Ten post edytował SongoQ 11.04.2005, 23:01:12


--------------------
Go to the top of the page
+Quote Post
falkor
post 11.04.2005, 22:59:44
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


No bingo a ja chcialbym wyciagnac po samej 1 albo 2 a nie po zestawie '1,2' bo to mnie nie uzadzi sad.gif...jesli sie da to prosze napisz....
jakkolwiek Dzieki
Go to the top of the page
+Quote Post
SongoQ
post 11.04.2005, 23:04:04
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


No wlasnie Ci odpisalem w powyzszym poscie.

A tu masz link do dokumentacji http://dev.mysql.com/doc/mysql/en/set.html


--------------------
Go to the top of the page
+Quote Post
falkor
post 11.04.2005, 23:08:11
Post #9





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


Dzieki smile.gif WIELKIE DZIEKI

P.s. Ciekawe ze tej funkcji nie moge uzyc gdyz wyskakuje blad jakiejs zbieznosci latin 1 i latin 2...(moge Ci go zacytowac jesli CIe to interesuje)...dopiero drugi sposob z LIKE dziala choc nie jest idealny to wystarczy na moje potrzeby...

a zreszta: "ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and
(latin2_general_ci,IMPLICIT) for operation 'find_in_set'"

Ten post edytował falkor 11.04.2005, 23:26:05
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:40