Discussion:
Jak odjąć zawartość tabeli od zawartości drugiej tabeli w Access
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
b***@artystycznewnetrza.pl
2006-11-23 09:21:02 UTC
Permalink
Mam trzy tabele o nazwach np. 1,2,3 każda z nich ma tylko jedną
kolumnę na której jest klucz i wpisy nie mogą się powtarzać.
Chciałbym uzyskać takie działanie aby z tabeli 1 usunąć rekordy
które są w tabelach 2 i 3 w matematyczny sposób zapisałbym to tak
1-(2+3) a wynik zapisać w oddzielnej tabeli o nazwie 4

Czy ktoś mógłby podać mi wzór jak to zrobić. Raczej wydaje mi
się, że będzie to kwerenda wybierająca ale może się mylę.

Skibbbi
Nguyen Bang Giang
2006-11-23 09:41:03 UTC
Permalink
Post by b***@artystycznewnetrza.pl
Mam trzy tabele o nazwach np. 1,2,3 każda z nich ma tylko jedną
kolumnę na której jest klucz i wpisy nie mogą się powtarzać.
Chciałbym uzyskać takie działanie aby z tabeli 1 usunąć rekordy
które są w tabelach 2 i 3 w matematyczny sposób zapisałbym to tak
1-(2+3) a wynik zapisać w oddzielnej tabeli o nazwie 4
Czy ktoś mógłby podać mi wzór jak to zrobić. Raczej wydaje mi
się, że będzie to kwerenda wybierająca ale może się mylę.
Tabele są tabelami a nie wartościami skalarnymi. Nie wiemy co znaczy
matemetyczne działanie na tabelach typu tabela1-Tabela2-Tabela3 bo nie
wiemy jak rekordy zawarte w nich mają się do siebie. Mógłbyś sprecyzować?
--
Pozdrawiam
Giang
Marcin Ziemian
2006-11-23 10:15:29 UTC
Permalink
Post by Nguyen Bang Giang
Post by b***@artystycznewnetrza.pl
Mam trzy tabele o nazwach np. 1,2,3 każda z nich ma tylko jedną
kolumnę na której jest klucz i wpisy nie mogą się powtarzać.
Chciałbym uzyskać takie działanie aby z tabeli 1 usunąć rekordy
które są w tabelach 2 i 3 w matematyczny sposób zapisałbym to tak
1-(2+3) a wynik zapisać w oddzielnej tabeli o nazwie 4
Czy ktoś mógłby podać mi wzór jak to zrobić. Raczej wydaje mi
się, że będzie to kwerenda wybierająca ale może się mylę.
Tabele są tabelami a nie wartościami skalarnymi. Nie wiemy co znaczy
matemetyczne działanie na tabelach typu tabela1-Tabela2-Tabela3 bo nie
wiemy jak rekordy zawarte w nich mają się do siebie. Mógłbyś sprecyzować?
Hmm... Jeśli wartości w rekordach tabel odpowiadają sobie względem typu
danych, to można by spróbować tak:

Select Into tabela4 from tabela1 where [KolumnaKlucza] Not in (Select
KolumnaKlucza from Tabela2) AND [KolumnaKlucza] Not IN (Select KolumnaKlucza
from Tabela3);

Ew. połączyć tabelę 1 join-ami typu Left z tabelą 2 i tabelą 3 i założyć
warunek dla pól określających klucze tabel 2 i 3 na Is Null.

Pozdro
--
M.Z.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Tomasz Kiełpiński
2006-11-23 10:26:51 UTC
Permalink
Post by Nguyen Bang Giang
Post by b***@artystycznewnetrza.pl
Mam trzy tabele o nazwach np. 1,2,3 każda z nich ma tylko jedną
kolumnę na której jest klucz i wpisy nie mogą się powtarzać.
Chciałbym uzyskać takie działanie aby z tabeli 1 usunąć rekordy
które są w tabelach 2 i 3 w matematyczny sposób zapisałbym to tak
1-(2+3) a wynik zapisać w oddzielnej tabeli o nazwie 4
Czy ktoś mógłby podać mi wzór jak to zrobić. Raczej wydaje mi
się, że będzie to kwerenda wybierająca ale może się mylę.
Tabele są tabelami a nie wartościami skalarnymi. Nie wiemy co znaczy
matemetyczne działanie na tabelach typu tabela1-Tabela2-Tabela3 bo nie
wiemy jak rekordy zawarte w nich mają się do siebie. Mógłbyś sprecyzować?
A my wiemy :) Pytanie tylko czy na pewno 2 "I" 3 (Czyli usuwamy z tabeli 1
dane, które występują jednocześnie w obu tabelach) czy też może 2 "LUB" 3
(Czyli usuwamy jeśli wystąpią co najmniej w jednej z tych tabel.

Do biura (BTW, nie wstydź się swojego imienia): Skoro chcesz tworzyć tabele,
to dlaczego kwerenda wybierająca a nie tworząca tabele? :)

Dla "I" SQL będzie wyglądał tak:

SELECT [1].Klucz INTO 4
FROM (1 INNER JOIN 2 ON [1].Klucz = [2].Klucz) INNER JOIN 3 ON [1].Klucz =
[3].Klucz;

a dla "LUB":

SELECT [1].Klucz INTO 4
FROM (2 RIGHT JOIN 1 ON [2].Klucz = [1].Klucz) LEFT JOIN 3 ON [1].Klucz =
[3].Klucz
WHERE (((Not IsNull([2].[klucz]) Or Not IsNull([3].[Klucz]))=False));

Pozdrawiam,
Kiełpiś
--
Było smaszno, a jaszmije smukwijne Tomasz Kiełpiński
Świdrokrętnie na zegwniku wężały, a.k.a. "Kiełpiś"
Peliczaple stały smutcholijne Odpowiadając prywatnie,
I zbłąkinie rykoświstąkały. usuń: FALSZYWY z adresu
Nguyen Bang Giang
2006-11-23 10:42:41 UTC
Permalink
Post by Tomasz Kiełpiński
A my wiemy :)
To co wiemy też domyśleliśmy ale postanowiliśmy, że wódy nie stawimy ;-)
Post by Tomasz Kiełpiński
... Pytanie tylko czy na pewno ... czy też może ...
Ano właśnie, wiemy, ale czy napewno? A czy też może? ;-))))
--
Pozdrawiam
Giang
Tomasz Kiełpiński
2006-11-23 11:18:52 UTC
Permalink
Post by Nguyen Bang Giang
Post by Tomasz Kiełpiński
A my wiemy :)
To co wiemy też domyśleliśmy ale postanowiliśmy, że wódy nie stawimy ;-)
Post by Tomasz Kiełpiński
... Pytanie tylko czy na pewno ... czy też może ...
Ano właśnie, wiemy, ale czy napewno? A czy też może? ;-))))
Na pewno wiemy, co miał na myśli odejmując i dodając tabele :)

Pozdrawiam,
Kiełpiś
--
Bzdrężyło. Szłapy maślizgajne Tomasz Kiełpiński
Bujowierciły w gargazonach a.k.a. "Kiełpiś"
Tubylerczykom spełły fajle, Odpowiadając prywatnie,
Humpel wyświchnął ponad usuń: FALSZYWY z adresu
b***@artystycznewnetrza.pl
2006-11-23 10:45:15 UTC
Permalink
Post by Tomasz Kiełpiński
SELECT [1].Klucz INTO 4
FROM (1 INNER JOIN 2 ON [1].Klucz = [2].Klucz) INNER JOIN 3 ON [1].Klucz =
[3].Klucz;
SELECT [1].Klucz INTO 4
FROM (2 RIGHT JOIN 1 ON [2].Klucz = [1].Klucz) LEFT JOIN 3 ON [1].Klucz =
[3].Klucz
WHERE (((Not IsNull([2].[klucz]) Or Not IsNull([3].[Klucz]))=False));
Zaraz będę testował. Generalnie typ danych jest ten sam oraz
wartości częściowo są identyczne. Chcę aby z pierwszej tabeli
usunąć wszystkie rekordy, które są zawarte w tabeli 2 i 3 i
zapisać wynik w tabeli 4

Krzys
b***@artystycznewnetrza.pl
2006-11-23 10:56:34 UTC
Permalink
Post by b***@artystycznewnetrza.pl
Zaraz będę testował. Generalnie typ danych jest ten sam oraz
wartości częściowo są identyczne. Chcę aby z pierwszej tabeli
usunąć wszystkie rekordy, które są zawarte w tabeli 2 i 3 i
zapisać wynik w tabeli 4
Po przeanalizowaniu jeszcze raz postu opisującego sposób wydzielenia
danych i rozważającego kwestię "i" albo "lub" stwierdzam
kategorycznie ;) że w moim przypadku będzie to "lub" bo rzeczywiście
chodzi mi o to by usunąć z tabeli 1 wszystkie rekordy które
występują w tabeli 2 lub 3.

Krzys
Tomasz Kiełpiński
2006-11-23 11:16:31 UTC
Permalink
Post by b***@artystycznewnetrza.pl
Post by b***@artystycznewnetrza.pl
Zaraz będę testował. Generalnie typ danych jest ten sam oraz
wartości częściowo są identyczne. Chcę aby z pierwszej tabeli
usunąć wszystkie rekordy, które są zawarte w tabeli 2 i 3 i
zapisać wynik w tabeli 4
Po przeanalizowaniu jeszcze raz postu opisującego sposób wydzielenia
danych i rozważającego kwestię "i" albo "lub" stwierdzam
kategorycznie ;) że w moim przypadku będzie to "lub" bo rzeczywiście
chodzi mi o to by usunąć z tabeli 1 wszystkie rekordy które
występują w tabeli 2 lub 3.
Krzys
A jednak :)

Pozdrawiam,
Kiełpiś

PS. O imię chodziło mi raczej w polu from/od. Scrabbi jest jak najbardziej
OK, również w tym polu, ale adres e-mailowy wygląda (przynajmniej IMHO)
dziwnie :)
--
Bzdrężyło. Szłapy maślizgajne Tomasz Kiełpiński
Bujowierciły w gargazonach a.k.a. "Kiełpiś"
Tubylerczykom spełły fajle, Odpowiadając prywatnie,
Humpel wyświchnął ponad usuń: FALSZYWY z adresu
b***@artystycznewnetrza.pl
2006-11-23 12:41:58 UTC
Permalink
Post by Tomasz Kiełpiński
PS. O imię chodziło mi raczej w polu from/od. Scrabbi jest jak najbardziej
OK, również w tym polu, ale adres e-mailowy wygląda (przynajmniej IMHO)
dziwnie :)
Fajnie, fajnie ale jak to zmienić. Korzystam z grup na Google i w
profilu mam jako nick wpisane Skibbbi ale mimo to wyświetla się
adres.

A tak przy okazji to jak powinienem wpisać w kwerendzie ciąg komend w
sytuacji jeżeli mam trzy tabele o nazwach "dobre" "zrezygnowali"
"złe" w każdej jest tylko jedna kolumna o nazwie "email" i na niej
jest klucz. I z tabeli "dobre" chciałbym usunąć wszystkie adresy z
tabel "zrezygnowali" i "złe" i zapisać je w tabeli "aktualne"

czy to może tak?

SELECT [dobre].email INTO aktualne
FROM (zrezygnowali RIGHT JOIN dobre ON [zrezygnowali].email =
[dobre].email) LEFT JOIN złe ON [dobre].email = [złe].email
WHERE ((Not IsNull([zrezygnowali].[email]) Or Not
IsNull([złe].[email])=False)

Jak te komendy powinny wyglądać gdyby były tylko dwie tabele np.
"dobre" i "złe"

A jak powinny wyglądać komendy przy 4 tabelach gdyby dodatkowo
doszła tabela np. "przedawnione" oczywiście też z jedną kolumną
email i kluczem

Jeżeli będę to wiedział to sobie wydedukuję co z robić w
przypadku 10 tabel itd.

Krzys
Tomasz Kiełpiński
2006-11-23 13:14:55 UTC
Permalink
Post by b***@artystycznewnetrza.pl
Post by Tomasz Kiełpiński
PS. O imię chodziło mi raczej w polu from/od. Scrabbi jest jak
najbardziej OK, również w tym polu, ale adres e-mailowy wygląda
(przynajmniej IMHO) dziwnie :)
Fajnie, fajnie ale jak to zmienić. Korzystam z grup na Google i w
profilu mam jako nick wpisane Skibbbi ale mimo to wyświetla się
adres.
Hm. Prawdę mówiąc nie mam pojęcia :(
Post by b***@artystycznewnetrza.pl
A tak przy okazji to jak powinienem wpisać w kwerendzie ciąg komend w
sytuacji jeżeli mam trzy tabele o nazwach "dobre" "zrezygnowali"
"złe" w każdej jest tylko jedna kolumna o nazwie "email" i na niej
jest klucz. I z tabeli "dobre" chciałbym usunąć wszystkie adresy z
tabel "zrezygnowali" i "złe" i zapisać je w tabeli "aktualne"
czy to może tak?
SELECT [dobre].email INTO aktualne
FROM (zrezygnowali RIGHT JOIN dobre ON [zrezygnowali].email =
[dobre].email) LEFT JOIN złe ON [dobre].email = [złe].email
WHERE ((Not IsNull([zrezygnowali].[email]) Or Not
IsNull([złe].[email])=False)
Jak te komendy powinny wyglądać gdyby były tylko dwie tabele np.
"dobre" i "złe"
A jak powinny wyglądać komendy przy 4 tabelach gdyby dodatkowo
doszła tabela np. "przedawnione" oczywiście też z jedną kolumną
email i kluczem
Jeżeli będę to wiedział to sobie wydedukuję co z robić w
przypadku 10 tabel itd.
Tak łatwo to nie będzie :) Jeśli prawidłowo podmieniłeś 1 na dobre, 2 na
zrezygnowali i 3 na złe, a klucz na email to powinno hulać.
A teraz: skopiuj to polecenie, stwórz nową kwerendę, wejdź w widok SQL i tam
wklej polecenie dodając średnik na końcu. Teraz przełącz z powrotem na widok
projektu i zobacz jak to wygląda.

I jeszcze uwaga ogólna: łatwiej ci będzie pracować z bazą (zwłaszcza przy 10
tabelach :)), jeśli wszystkie dane umieścisz w jednej tabeli (pola: email i
status)

Powodzenia,
Kiełpiś
--
Było smaszno, a jaszmije smukwijne Tomasz Kiełpiński
Świdrokrętnie na zegwniku wężały, a.k.a. "Kiełpiś"
Peliczaple stały smutcholijne Odpowiadając prywatnie,
I zbłąkinie rykoświstąkały. usuń: FALSZYWY z adresu
b***@artystycznewnetrza.pl
2006-11-23 14:34:29 UTC
Permalink
Post by b***@artystycznewnetrza.pl
Jak te komendy powinny wyglądać gdyby były tylko dwie tabele np.
"dobre" i "złe"
A jak powinny wyglądać komendy przy 4 tabelach gdyby dodatkowo
doszła tabela np. "przedawnione" oczywiście też z jedną kolumną
email i kluczem
Trochę to dla mnie niepojęte :( więc postanowiłem zacząć
prościej od kwerendy usuwającej.
Otworzyłem nowy wątek więc jakbyś mógł wypowiedzieć się w nim
to dzięki.

Krzys
Tomasz Kiełpiński
2006-11-23 15:14:14 UTC
Permalink
Post by b***@artystycznewnetrza.pl
Post by b***@artystycznewnetrza.pl
Jak te komendy powinny wyglądać gdyby były tylko dwie tabele np.
"dobre" i "złe"
A jak powinny wyglądać komendy przy 4 tabelach gdyby dodatkowo
doszła tabela np. "przedawnione" oczywiście też z jedną kolumną
email i kluczem
Trochę to dla mnie niepojęte :( więc postanowiłem zacząć
prościej od kwerendy usuwającej.
Otworzyłem nowy wątek więc jakbyś mógł wypowiedzieć się w nim
to dzięki.
Co jest niepojętę? Użycie klawiszy Ctrl+C, Ctrl+V? Przełączanie widoków
kwerendy?
Może warto poczytać o podstawach Accessa w takim razie?

Pozdrawiam,
Kiełpiś
--
Brzdeśniało już; ślimonne prztowie Tomasz Kiełpiński
Wyrło i warło się w gulbieży; a.k.a. "Kiełpiś"
Zmimszałe ćwiły borogowie Odpowiadając prywatnie,
I rcie grdypały z mrzerzy. usuń: FALSZYWY z adresu
b***@artystycznewnetrza.pl
2006-11-23 15:53:22 UTC
Permalink
Post by Tomasz Kiełpiński
Co jest niepojętę? Użycie klawiszy Ctrl+C, Ctrl+V? Przełączanie widoków
kwerendy?
Może warto poczytać o podstawach Accessa w takim razie?
Samo skopiowanie jest proste i wiem gdzie to wpisać. Chodzi o to, że
nie do końca rozumiem jak to działa i co poszczególne wpisy
oznaczają. A jeżeli nie rozumiem to ciężko to modyfikować. A
pisać na grupie o każdej dupereli to nie wypada. Chodzi o to, że w
tej sytuacji chciałbym znaleźć jakieś rozwiązanie, które rozumiem
i stąd pomysł na kwerendę usuwającą. Będę wdzięczny za uwagi w
tym względzie.

Są dwie tabele o nazwach "1" i "2" obie tabele mają tylko jedno pole
mail

Wybrałem kwerenda usuwająca i napisałem coś takiego ale nie
działa:

Pole: MAIL
Tabela: 1
Usuwanie: Gdzie
Kryteria: <>[2]![MAIL]

Chciałem tym osiągnąć aby kwerenda zwróciła mi wszystkie maile z
tabeli "1" ale wywalając z niej te, które znajdzie w tabeli "2"

Może piszę chaotycznie więc przykład:

Tabela "1"
***@1.pl
***@2.pl
***@3.pl

Tabela "2"
***@2.pl

Kwerenda usuwająca
***@1.pl
***@3.pl
Medyk
2006-11-23 16:46:37 UTC
Permalink
***@artystycznewnetrza.pl napisał(a):
| Chciałem tym osiągnąć aby kwerenda zwróciła mi wszystkie maile
z
| tabeli "1" ale wywalając z niej te, które znajdzie w tabeli "2"
|
| Może piszę chaotycznie więc przykład:
|
| Tabela "1"
| ***@1.pl
| ***@2.pl
| ***@3.pl
|
| Tabela "2"
| ***@2.pl
|
| Kwerenda usuwająca
| ***@1.pl
| ***@3.pl
-------------------------------

Może przyda Ci się mój przykład, który zamieścił na swojej
stronie Krzysztof Pozorek.
Link do przykładu -> http://www.access.vis.pl/war320.htm

Pozdrawiam:
Medyk

Loading...