sanab
24.03.2011, 15:07:50
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:
UPDATE baza.tabela1
SET auto_update = '3'
WHERE baza.tabela1.contact_num = baza.tabela2.nr_st;
Jak ułożyć warunek?
Valdi_B
24.03.2011, 16:34:44
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
25.03.2011, 09:11:51
Sory jeśli wydało się nie jasne

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
27.03.2011, 13:58:20
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