Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Kopiowanie wierszy do tej samej tabeli + zmiana niektórych rekordów + warunek
Forum PHP.pl > Forum > Bazy danych > MySQL
reytan
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
pmir13
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.
reytan
Dziękuję za rozwiązanie! Działa.
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.