Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> unikatowy rekord na podstawie kilku pół (nie ID)
f4ll3ns3raf1n
post 25.04.2011, 21:03:48
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


Cześć,

staram się znaleźć rozwiązanie, ale nie potrafię (pewnie dla tego że nie wiem jak mam zapytanie dla wujka google wypisać :-(( )
otóż, mam taką tablicę:
Kod
id (INT)
seans_id(INT) - obca
rzad (INT)
miejsce (INT)
login (VARCHAR)


jeśli za pomocą zapytania dodam np. coś takiego:
  1. INSERT INTO `kino`.`miejsce` (
  2. `id` ,
  3. `seans_id` ,
  4. `rzad` ,
  5. `miejsce` ,
  6. `login` ,
  7. )
  8. VALUES (
  9. NULL , '3', '1', '1', 'testowy_login'
  10. );


oczywiście do bazy dodanie zostanie wskazany przeze mnie wpis,
problem polega na tym, że jak uruchomię taki sam skrypt to znów doda się do bazy taka sama linijka, z tym że, pod innym ID.
w jaki sposób mam tutaj zastrzec unikatowość, dla wybranych pól?

w tym przypadku unikatowe ma być zestawienie seans_id + rzad + miejsce, zestawienie tych 3 nie może się powtarzać.


zapewne rozwiązanie jest banalne, a ja na nie nie potrafię wpaść, bo nie potrafię sformułować mojego problemu :-(


z góry dzięki za pomoc!
Go to the top of the page
+Quote Post
JoShiMa
post 25.04.2011, 23:02:02
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Chodzi Ci o nadanie indeksu UNIQUE?

  1. ALTER TABLE `tabela` ADD UNIQUE (`kolumna`)


--------------------
Go to the top of the page
+Quote Post
f4ll3ns3raf1n
post 25.04.2011, 23:10:36
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


sęk w tym, że ja nie chcę unikatowej jednej kolumny, tylko zestawienie trzech

np. moge mieć kilka wpisów z tym samym seansem, ale różnym numerem rzędu lub miejsca
mogę mieć kilka seansów z tym samym seansem i rzędem, ale różnym numerem miejsca, podobnie ten sam seans i miejsce, tylko rząd inny
analogicznie to samo miejsce i ten sam rząd, ale już w zupełnie innym seansie.
tak jak wspomniałem seans, rząd oraz miejsce jako całość może występować tylko raz.

przykładowe zestawienie danych:
seans - s,
rząd - r,
miejsce - m,

s1 r1 m1
s1 r1 m2
s1 r2 m3
s2 r2 m3
s3 r2 m3


jak widać powyżej, watości mogą się powtarzać, ale ich całe zestawienie nie może się powielać, a obecnie niestety może
(zapewne przez wzgląd, że jest jeszcze pole ID, które jest kluczem, i za każdym razem jest inne; )

jeśli dodam unique do którejś kolumny, to nie będę miał możliwości pod tą samą kolumną trzymania tych samych wartości.... dla róznych pozostałych 2 parametrów.

Ten post edytował f4ll3ns3raf1n 25.04.2011, 23:16:32
Go to the top of the page
+Quote Post
pedro84
post 26.04.2011, 00:35:37
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


http://stackoverflow.com/questions/3229603...y-3-text-fields


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
JoShiMa
post 26.04.2011, 10:54:22
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(f4ll3ns3raf1n @ 25.04.2011, 23:10:36 ) *
sęk w tym, że ja nie chcę unikatowej jednej kolumny, tylko zestawienie trzech


Nie ma problemu. Jesli używasz phpMyAdmin to wchodzisz w widok pokazujący strukturę tabeli. Rozwijasz 'szczegóły' i na dole masz 'utwórz index'. Wpisujesz ile kolumn i po wciśnięciu [wykonaj] definiujesz nazwę indeksu, że ma być unikalny i jakie kolumny wchodzą w jego skład.

Zapytania nie pamiętam.


--------------------
Go to the top of the page
+Quote Post
thek
post 26.04.2011, 12:10:55
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To samo co podał kolega wyżej z ALTER TABLE, ale po przecinkach wymienia się kilka kolumn zamiast jednej. To cała filozofia...


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
JoShiMa
post 26.04.2011, 12:16:12
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


koleżanka bo to ja podałam tongue.gif
Powód edycji: [thek]: Moja wina... Dziś nie spałem dobrze i nie zwróciłem uwagi. Dziś pójdę spać wcześniej ;)


--------------------
Go to the top of the page
+Quote Post
f4ll3ns3raf1n
post 28.04.2011, 01:54:18
Post #8





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.11.2009

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


serdeczne dzięki, o to chodziło :-)
rzeczywiście w phpmyadmin jest to wręcz banalnie proste,

jeszcze raz dzięki za pomoc!
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: 18.07.2025 - 13:40