Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Kopiowanie wierszy do tej samej tabeli + zmiana niektórych rekordów + warunek
reytan
post 20.09.2013, 12:37:13
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.09.2009

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


Chcę skopiować wiersze w obrębie tej samej tabeli zmieniając wartości w kolumnie ID_prowadzonekontrole. Do utworzenia nowych wierszy chcę dopuścić pod warunkiem, że nie istnieje obecnie rekord, który miałby takie same wartości w kolumnach ID_prowadzonekontrole i Name, jak wiersz właśnie kopiowany. Jeśli istnieje już taki wiersz, kopiowanie (tworzenie nowego wiersza) ma zostać pominięte.

Ani kolumna ID_prowadzonekontrole, ani Name nie mogą być UNIQUE.

W tym celu napisałem taki zapytanie:

  1. INSERT INTO tabela (Name, ID_prowadzonekontrole, Unit, Generations, F2, F3) SELECT Name, '$id',
  2. Unit, Generations, F2, F3 FROM tabela WHERE NOT EXISTS (SELECT * FROM tabela WHERE Name = Name) AND
  3. ID_prowadzonekontrole = $prototype;


Oprócz tych kolumn jest jeszcze ID (AUTO INCREMENT).
$protype jest kopiowane do $id.

Zapytanie jest jednak nieskuteczne. Przypuszczam, że ze względu na Name = Name absolutnie nie mogło się to udać. Nie potrafię jednak zaproponować poprawki i stąd chciałbym poprosić Was o pomoc.

Reytan
Go to the top of the page
+Quote Post
pmir13
post 20.09.2013, 13:18:56
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


UNIQUE można założyć nie tylko na pojedyncze kolumny, ale również na kombinacje kolumn, czyli na przykład jeśli na razie w tabeli nie ma powtórzeń, których chcesz uniknąć, to wystarczy

  1. ALTER TABLE tabela ADD UNIQUE( ID_prowadzonekontrole, Name );


Wtedy każda z tych kolumn z osobna może mieć powtarzane wielokrotnie te same wartości, ale ich para musi już być unikalna.
INSERT INGORE powinno wówczas prawidłowo zrobić to czego oczekujesz.
Go to the top of the page
+Quote Post
reytan
post 20.09.2013, 14:48:27
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.09.2009

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


Dziękuję za rozwiązanie! Działa.
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: 3.06.2024 - 10:59