🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych
2 messages
2 total messages Started by Adam Sun, 02 Sep 2018 18:31
MS-SQL, kasowanie rekordów nie mających odniesień.
#195653
Author: Adam
Date: Sun, 02 Sep 2018 18:31
60 lines
2167 bytes
Witajcie.

Pomóżcie, bo mam jakieś zaćmienie.

Jest sobie podstawowa tabela z towarami i kilka tabel pomocniczych, 
miedzy innymi [Dane_Bin] i [DaneBin_Linki]

[DaneBin_Linki] zawierają odniesienia (ich typ, opis, itd) od tabeli 
głównej i ewentualnie dalej do tabeli [Dane_Bin].

[Dane_Bin] to głównie fotografie.

Część powiązań towarów z fotografiami została usunięta, ale same zapisy 
zostały w [Dane_Bin]

Chcę usunąć "sieroty" z [Dane_Bin] - czyli takie rekordy, które nie są 
wskazywane przez [DaneBin_Linki].

[Dane_Bin] - niektóre kolumny:
DaB_DabID - identyfikator rekordu

[DaneBin_Linki]  - niektóre kolumny:
DBL_DabId - identyfikator rekordu
DBL_DabId - wskaźnik do tabeli [Dane_Bin]

relacja: [DaneBin_Linki].DBL_DabId -> [Dane_Bin].DaB_DabID

Czyli chcę usunąć takie rekordy z DaB_DabId, na które nie wskazują 
DBL_DabId.



Przykład:

[Dane_Bin]
2
3
5
7
8

[DaneBin_Linki]
23 | 3
24 | 4
25 | 6
26 | 7
27 | 9

Z [Dane_Bin] chcę więc usunąć 2, 5 i 8, bo nie wskazują na nie żadne 
rekordy z [DaneBin_Linki].

Jak to zrobić?
Jakaś tabela pomocnicza?
Kursorem jechać? Nigdy chyba nie używałem kursorów.


-- 
Pozdrawiam.

Adam
Re: MS-SQL kasowanie rekordw nie maj…cych odniesień.
#195654
Author: ydziO
Date: Sun, 02 Sep 2018 18:52
59 lines
2577 bytes
On 2018-09-02 18:31:40 +0000, Adam said:

> Witajcie.
> 
> Pomóżcie, bo mam jakieś zaćmienie.
> 
> Jest sobie podstawowa tabela z towarami i kilka tabel pomocniczych, 
> miedzy innymi [Dane_Bin] i [DaneBin_Linki]
> 
> [DaneBin_Linki] zawierają odniesienia (ich typ, opis, itd) od tabeli 
> głównej i ewentualnie dalej do tabeli [Dane_Bin].
> 
> [Dane_Bin] to głównie fotografie.
> 
> Część powiązań towarów z fotografiami została usunięta, ale same zapisy 
> zostały w [Dane_Bin]
> 
> Chcę usunąć "sieroty" z [Dane_Bin] - czyli takie rekordy, które nie są 
> wskazywane przez [DaneBin_Linki].
> 
> [Dane_Bin] - niektóre kolumny:
> DaB_DabID - identyfikator rekordu
> 
> [DaneBin_Linki]  - niektóre kolumny:
> DBL_DabId - identyfikator rekordu
> DBL_DabId - wskaźnik do tabeli [Dane_Bin]
> 
> relacja: [DaneBin_Linki].DBL_DabId -> [Dane_Bin].DaB_DabID
> 
> Czyli chcę usunąć takie rekordy z DaB_DabId, na które nie wskazują DBL_DabId.
> 
> 
> 
> Przykład:
> 
> [Dane_Bin]
> 2
> 3
> 5
> 7
> 8
> 
> [DaneBin_Linki]
> 23 | 3
> 24 | 4
> 25 | 6
> 26 | 7
> 27 | 9
> 
> Z [Dane_Bin] chcę więc usunąć 2, 5 i 8, bo nie wskazują na nie żadne 
> rekordy z [DaneBin_Linki].
> 
> Jak to zrobić?
> Jakaś tabela pomocnicza?
> Kursorem jechać? Nigdy chyba nie używałem kursorów.

Delete from Dane_Bin where tabela1 not in (select tabela2 from daneBin_linki)

Najpierw oczywiście zrób sobie selecta żeby sprawdzić czy to chciałeś.
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