Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: unikatowy rekord na podstawie kilku pół (nie ID)
Forum PHP.pl > Forum > Bazy danych > MySQL
f4ll3ns3raf1n
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!
JoShiMa
Chodzi Ci o nadanie indeksu UNIQUE?

  1. ALTER TABLE `tabela` ADD UNIQUE (`kolumna`)
f4ll3ns3raf1n
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.
JoShiMa
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.
thek
To samo co podał kolega wyżej z ALTER TABLE, ale po przecinkach wymienia się kilka kolumn zamiast jednej. To cała filozofia...
JoShiMa
koleżanka bo to ja podałam tongue.gif
f4ll3ns3raf1n
serdeczne dzięki, o to chodziło :-)
rzeczywiście w phpmyadmin jest to wręcz banalnie proste,

jeszcze raz dzięki za pomoc!
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.