🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych
3 messages
3 total messages Started by Borneq Sun, 28 Jan 2018 03:34
Zmiana w tabeli na podstawie żądań z drugiej tabeli
#195470
Author: Borneq
Date: Sun, 28 Jan 2018 03:34
27 lines
1621 bytes
(Pseudokod: nazwy tabel i kolumn poglądowe)
Tabela Transakcje:
   Adres
   HaszTransakcji
   Blok //nie używany tutaj
   Kwota //nie używana tutaj
   IndeksWTransakcji
	
Tabela Zmiany:
   SzukanyHasz
   IndeksWTransakcji
   NowyAdres
   BlokKtóryŻąda

Tabela Transakcje jest wielka a tabela Zmiany malutka.
Co chcę zrobić: jedno polecenie SQL ma zastąpić kod iteracyjny:

for wiersz in tabela Zmiany where BlokKtóryŻąda=%NUMER_BLOKU%
{
    select item from tabela Transakcje where
       Transakcje.HaszTransakcji = wiersz.SzukanyHasz
    and Transakcje.IndeksWTransakcji = wiersz.IndeksWTransakcji;

    update item.Adres = wiersz.NowyAdres;
}

Da się zrobić jakiegoś Joina, aby nie trzeba było wielu selektów?
Re: Zmiana w tabeli na podstawie żądań z drugiej tabeli
#195471
Author: Borneq
Date: Sun, 28 Jan 2018 03:36
15 lines
1244 bytes
W dniu 28.01.2018 o 04:34, Borneq pisze:
> Tabela Transakcje:
>    Adres
>    HaszTransakcji
>    Blok //nie używany tutaj
>    Kwota //nie używana tutaj
>    IndeksWTransakcji
> 
> Tabela Zmiany:
>    SzukanyHasz
>    IndeksWTransakcji
>    NowyAdres
>    BlokKtóryŻąda

I baza danych to MySQL.
Re: Zmiana w tabeli na podstawie żądań z drugiej tabeli
#195472
Author: Borneq
Date: Tue, 30 Jan 2018 00:31
23 lines
1545 bytes
W dniu 28.01.2018 o 04:36, Borneq pisze:
> W dniu 28.01.2018 o 04:34, Borneq pisze:
>> Tabela Transakcje:
>>    Adres
>>    HaszTransakcji
>>    Blok //nie używany tutaj
>>    Kwota //nie używana tutaj
>>    IndeksWTransakcji
>>
>> Tabela Zmiany:
>>    SzukanyHasz
>>    IndeksWTransakcji
>>    NowyAdres
>>    BlokKtóryŻąda
> 
> I baza danych to MySQL.

Odpowiedź:

update Transakcje t join Zmiany z on t.HaszTransakcji = z.SzukanyHasz
and t.IndeksWTransakcji = z.IndeksWTransakcji
set t.Adres = z.NowyAdres
where z.BlokKtoryZada=NUMER_BLOKU
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads