Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Update rekordu gdy rekord=rekord
Forum PHP.pl > Forum > Przedszkole
sanab
Hej,

Chciałbym updatować rekord jeśli inny rekord w tej samej tabeli jest równy innemu rekordowi w innej tabeli.
Próbuje tak ale nie wychodzi:

  1. UPDATE baza.tabela1
  2. SET auto_update = '3'
  3. WHERE baza.tabela1.contact_num = baza.tabela2.nr_st;


Jak ułożyć warunek?
Valdi_B
Sformułuj sprawę konkretniej:
1. Nazwy tabel, lista kolumn.
2. Sposób wiązania między rekordem "do aktualizacji" a "innym w tej samej tabeli".
3. Sposób wiązania między rekordem "innym w tej samej tabeli" a "innym w innej tabeli".

Do tego może jakiś opis, bo tak jak napisałeś, to za dużo trzeba się domyślać, jest za dużo możliwych wariantów.

Co do kojarzenia w stylu "porównanie z innym rekordem w tej samej tabeli", może coś Cię naprowadzi taki przykład:

Mamy tabelę pracowników, z atrybutami (m.in.)
- id (ident. pracownika),
- id_szefa,
- pensja
Chcemy znaleźć pracowników zarabiających więcej od swojego szefa.

SELECT nazw, imie
FROM prac AS t1 JOIN prac AS t2
ON t1.id_szefa = t2.id
WHERE t1.pensja > t2.pensja

Jeżeli to za mało, to napisz coś konkretniej.
sanab
Sory jeśli wydało się nie jasne smile.gif

Mam tabelę tabela1 w której mam dwie kolumny auto_update i contact_num

tabela1:
Kod
contact_num    auto_update
XY 491-103        1
XY 491-108        3
XY 491-122        3
XY 491-126        1
XY 491-135        3

tabela2 ma tak postać:
Kod
nr_st
XY 491-103
XY 491-108
XY 491-122
XY 491-126
XY 491-135

Chce przyrównać contact_num do nr_st i jeśli występuje taka wartość w nr_st to zmienić pole auto_update na 3
Valdi_B
Przepraszam za zwłokę (krótki wyjazd bez dostępu do komputera).
Rozwiązanie jest dość proste:

UPDATE tabela1 SET auto_update = 3
WHERE contact_num IN SELECT nr_st FROM tabela2
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.