Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Potrzebuję wykonać kwerendę która połączy kilka tabel o różnych długościach wierszy i tej samej ilości kolumn ( w każdej 3 kolumny )
SELECT "Tabela1"."1","Tabela1"."2","Tabela2"."1","Tabela2"."3"","Tabela3"."3""
FROM "Tabela1"
LEFT JOIN "Tabela2" on "Tabela1"."1" = "Tabela2"."1" and "Tabela1"."2" = "Tabela2"."2"
LEFT JOIN "Tabela3" on "Tabela1"."1" = "Tabela3"."1" and "Tabela1"."2" = "Tabela3"."2"
do tego chciałbym połączyć np : Tabela6 z Tabela 2 - i nie wiem jak to zrobić
Tzn chodzi mi o dodatnie Klauzuli FROM
Potrafię połączyć pierwszą tabelę z drugą i trzecią i kolejną ale jakbym chciał do tego połączenia dodać jeszcze relacje między tabelą np 7 i 8 to już nie wiem jak .
SELECT "Tabela1"."1","Tabela1"."2","Tabela2"."1","Tabela2"."3"","Tabela3"."3""
FROM "Tabela1"
LEFT JOIN "Tabela2" on "Tabela1"."1" = "Tabela2"."1" and "Tabela1"."2" = "Tabela2"."2"
LEFT JOIN "Tabela3" on "Tabela1"."1" = "Tabela3"."1" and "Tabela1"."2" = "Tabela3"."2"
do tego chciałbym połączyć np : Tabela6 z Tabela 2 - i nie wiem jak to zrobić
Tzn chodzi mi o dodatnie Klauzuli FROM
Potrafię połączyć pierwszą tabelę z drugą i trzecią i kolejną ale jakbym chciał do tego połączenia dodać jeszcze relacje między tabelą np 7 i 8 to już nie wiem jak .
OpenOffice.ux.pl.3.4 na Windows XP
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
FROM jest tylko jedno:
SELECT <jakie kolumny> FROM <skąd> WHERE <jakie wiersze>
JOIN jest wchodzi w skład opisu struktury <skąd>.
Do tego co masz dopisujesz ... JOIN nazwa_tabeli ON warunek_zgodności_wierszy
SELECT <jakie kolumny> FROM <skąd> WHERE <jakie wiersze>
JOIN jest wchodzi w skład opisu struktury <skąd>.
Do tego co masz dopisujesz ... JOIN nazwa_tabeli ON warunek_zgodności_wierszy
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Dziękuję - działa
OpenOffice.ux.pl.3.4 na Windows XP
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Dwie tabele T1 i T2 w każdej identyczna długość wierszy i w każdej po 3 kolumny
T1 zbiór liczb od 1 do 8 T2 zbiór liczb od 1 do 40
Jak wyciągnąć z tabeli T2 liczby z tych komórek z Tabeli T1 gdzie są wartości np 1 8 5 i 2 4 9
SELECT "T2"."1" , "T2"."2" , "T2"."3"
FROM "T1" WHERE "1" = 1 and "2" = 8 and "3" = 5 ; - nie działa bo odnosi się do pierwszej tabeli
SELECT "T2"."1" , "T2"."2" , "T2"."3"
FROM "T1"
JOIN "T2" on "T1"."1"= ?????????????
dwie kolumny o dwóch różnych zbiorach liczb nie chodzi mi o porównanie liczby 1 z tabeli 1 i liczby 1 z tabeli 2 tylko wyszukanie liczby 1 z tabeli 1 i podanie
wartości z tej samej komórki w tabeli 2 .
T1 zbiór liczb od 1 do 8 T2 zbiór liczb od 1 do 40
Jak wyciągnąć z tabeli T2 liczby z tych komórek z Tabeli T1 gdzie są wartości np 1 8 5 i 2 4 9
SELECT "T2"."1" , "T2"."2" , "T2"."3"
FROM "T1" WHERE "1" = 1 and "2" = 8 and "3" = 5 ; - nie działa bo odnosi się do pierwszej tabeli
SELECT "T2"."1" , "T2"."2" , "T2"."3"
FROM "T1"
JOIN "T2" on "T1"."1"= ?????????????
dwie kolumny o dwóch różnych zbiorach liczb nie chodzi mi o porównanie liczby 1 z tabeli 1 i liczby 1 z tabeli 2 tylko wyszukanie liczby 1 z tabeli 1 i podanie
wartości z tej samej komórki w tabeli 2 .
OpenOffice.ux.pl.3.4 na Windows XP
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
SELECT .... FROM T1 JOIN T2 ON ?????nowicjusz pisze:Jak wyciągnąć z tabeli T2 liczby z tych komórek z Tabeli T1 gdzie są wartości np 1 8 5 i 2 4 9
musisz umieć wyrazić warunek połączenia rekordów w postaci wyrażenia logicznego używającego nazw pól tabel T1, T2 i w razie potrzeby wartości stałych.
Stwierdzenie "gdzie są wartości np 1 8 5 i 2 4 9" jest przykładem, a przykłady są na ogół za mało precyzyjne
.... ON (T1.1, T1.2, T1.3) = (1, 8, 5) AND (T2.1, T2.2, T2.3) = (2, 4, 9)
Można też formułować tzw pełne złączenie za pomocą składni
SELECT .... FROM T1, T2 WHERE ...
w której nie ma warunku złączenia, tak jakby był on zawsze spełniony, a o wyborze rekordów decyduje filtr. Ta wersja wymaga dobrego optymalizatora zapytań w systemie, w przeciwnym razie bywa bardzo nieefektywna.
SELECT .... FROM T1, T2 WHERE (T1.1, T1.2, T1.3) = (1, 8, 5) AND (T2.1, T2.2, T2.3) = (2, 4, 9)
PS. Jak znam Base'a, wszystkie nazwy obiektów trzeba ująć w cudzysłowy podwójne.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
ostatnią wiadomość od Ciebie tzn informacje w niej zawarte przetestuję ; poprzednie informacje w końcu pojąłem i poradziłem sobie z zadaniem na takiej zasadzie :
Problem stanowi jednak dublowanie wierszy i tu moje kolejne pytanie :
Czy do takiej formy kodu SQL jaki przedstawiłem ( bo taka forma jest zadowalająca jak na moją małą wiedzę ) ; istnieje możliwość dodania klauzuli lub jakiejś funkcji np UNION tak aby wynik kwerendy ograniczyć do unikalnych wartości tzn aby wiersze nie dublowały się tzn aby nie było takich samych wierszy ??
Dziękuję za informacje i tak jak pisałem tę ostatnią odpowiedz przeanalizuję i postaram się nauczyć tak jak poprzednie
Problem stanowi jednak dublowanie wierszy i tu moje kolejne pytanie :
Czy do takiej formy kodu SQL jaki przedstawiłem ( bo taka forma jest zadowalająca jak na moją małą wiedzę ) ; istnieje możliwość dodania klauzuli lub jakiejś funkcji np UNION tak aby wynik kwerendy ograniczyć do unikalnych wartości tzn aby wiersze nie dublowały się tzn aby nie było takich samych wierszy ??
Dziękuję za informacje i tak jak pisałem tę ostatnią odpowiedz przeanalizuję i postaram się nauczyć tak jak poprzednie
Ostatnio zmieniony wt lut 04, 2014 11:36 pm przez nowicjusz, łącznie zmieniany 1 raz.
OpenOffice.ux.pl.3.4 na Windows XP
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Można: SELECT DISTINCT (lista pól) FROM ...
Ale czy naprawdę nie da się uprościć kryterium łączenia?
Ale czy naprawdę nie da się uprościć kryterium łączenia?
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Naprawdę nie potrafię odpowiedzieć na to pytanie : jak dobrać kryteria wyboru.
W wierszu pierwszym są numery tabel w drugim numery kolumn w trzecim wierszu ustawiłem liczby które mnie interesują i oznaczyłem kolorami ... te liczby występują w różnych wierszach a na potrzeby zobrazowania problemu ustawiłem je w wierszu nr 3 .
W komórkach A19:H19 jest ciąg liczb który muszę uzyskać z tych wszystkich tabel ustalając pewne kryteria .
Najlepiej aby w jednym wierszu zalazło się te 8 liczb .
Wydaje mi się że założyłem wszystkie możliwości połączenia tabel aby uzyskać ten zbiór .
Planowałem wybrać wszystkie kolumny ze wszystkich tabel i połączyć je ze sobą lecz uzyskiwałem nie dość że zdublowane wiersze to też zdublowane kolumny.
Tak swoimi słowami postaram się opisać na tym przykładzie :
Najlepiej by było połączyć liczby na wszystkie możliwe sposoby i uważałem że czym bardziej skomplikowane założenia i więcej warunków do spełnienia to będzie korzystniejszy wynik tzn znajdę kilka wierszy o poszukiwanych przeze mnie wartościach eliminując przy tym wszystkie możliwe kombinacje a okazuje się że sprawa wygląda odwrotnie . Im więcej warunków tym więcej wierszy i to powtarzających się
W wierszu pierwszym są numery tabel w drugim numery kolumn w trzecim wierszu ustawiłem liczby które mnie interesują i oznaczyłem kolorami ... te liczby występują w różnych wierszach a na potrzeby zobrazowania problemu ustawiłem je w wierszu nr 3 .
W komórkach A19:H19 jest ciąg liczb który muszę uzyskać z tych wszystkich tabel ustalając pewne kryteria .
Najlepiej aby w jednym wierszu zalazło się te 8 liczb .
Wydaje mi się że założyłem wszystkie możliwości połączenia tabel aby uzyskać ten zbiór .
Planowałem wybrać wszystkie kolumny ze wszystkich tabel i połączyć je ze sobą lecz uzyskiwałem nie dość że zdublowane wiersze to też zdublowane kolumny.
Tak swoimi słowami postaram się opisać na tym przykładzie :
Najlepiej by było połączyć liczby na wszystkie możliwe sposoby i uważałem że czym bardziej skomplikowane założenia i więcej warunków do spełnienia to będzie korzystniejszy wynik tzn znajdę kilka wierszy o poszukiwanych przeze mnie wartościach eliminując przy tym wszystkie możliwe kombinacje a okazuje się że sprawa wygląda odwrotnie . Im więcej warunków tym więcej wierszy i to powtarzających się

Ostatnio zmieniony wt lut 04, 2014 11:37 pm przez nowicjusz, łącznie zmieniany 1 raz.
OpenOffice.ux.pl.3.4 na Windows XP
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Jeśli się nie machnąłem przy czytaniu
select distinct
777.1, 717.2, 717.3, 777.4, 854.1, 154.2, 156.3, 154.3
from 154
join 156 on (154.1, 154.2) = (156.1, 156.2)
join 164 on (154.1, 154.3, 156.3) = (164.1, 164.3, 164.2)
join 174 on (154.1, 154.3) = (174.1, 174.3)
join 777 on 174.3 = 777.3
join 717 on (777.1, 777.2) = (717.1, 717.3)
join 854 on (154.2, 154.3) = (854.2, 854.3)
albo
select distinct
777.1, 717.2, 717.3, 777.4, 854.1, 154.2, 156.3, 154.3
from 154, 156, 164, 174, 777, 717, 854
where
(154.1, 154.2) = (156.1, 156.2) and
(154.1, 154.3, 156.3) = (164.1, 164.3, 164.2) and
(154.1, 154.3) = (174.1, 174.3) and
174.3 = 777.3 and
(777.1, 777.2) = (717.1, 717.3) and
(154.2, 154.3) = (854.2, 854.3)
chyba że z jakichś tam powodów wiadomo, że np. jeżeli któreś dwa pola się zgadzają, to trzecie też musi. Ale to zależy od sensu tych danych.
select distinct
777.1, 717.2, 717.3, 777.4, 854.1, 154.2, 156.3, 154.3
from 154
join 156 on (154.1, 154.2) = (156.1, 156.2)
join 164 on (154.1, 154.3, 156.3) = (164.1, 164.3, 164.2)
join 174 on (154.1, 154.3) = (174.1, 174.3)
join 777 on 174.3 = 777.3
join 717 on (777.1, 777.2) = (717.1, 717.3)
join 854 on (154.2, 154.3) = (854.2, 854.3)
albo
select distinct
777.1, 717.2, 717.3, 777.4, 854.1, 154.2, 156.3, 154.3
from 154, 156, 164, 174, 777, 717, 854
where
(154.1, 154.2) = (156.1, 156.2) and
(154.1, 154.3, 156.3) = (164.1, 164.3, 164.2) and
(154.1, 154.3) = (174.1, 174.3) and
174.3 = 777.3 and
(777.1, 777.2) = (717.1, 717.3) and
(154.2, 154.3) = (854.2, 854.3)
chyba że z jakichś tam powodów wiadomo, że np. jeżeli któreś dwa pola się zgadzają, to trzecie też musi. Ale to zależy od sensu tych danych.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
nie działają u mnie nawiasy , kopiuj wklej nic nie da chociażby z tego względu że nie ma kolumny 4 tzn 777.4 ale to akurat drobiazg.
Ogólnie kwerenda wybiera właściwie i distinct działa poprawnie .
Popróbuję jeszcze z nawiasami wtedy może będzie mniejsza ilość wierszy .
aha byłbym zapomniał odpowiedzieć na pytanie - to co musi się zgadzać to akurat z tych wartości w tabelach wynik ( te 8 liczb )
Chyba będę potrzebował jakieś dodatkowe kryterium wyboru bo jeżeli wyników jest wiele to znaczy że mimo dobrych założeń są inne liczby występujące w tej tabeli które na takiej samej zasadzie tworzą mi ciąg 8 liczb lecz złożony z zupełnie innych liczb .
Uważam że wybrałem wszystkie możliwości a to że wyników jest wiele to znaczy że wiele różnych liczb występuje w tych samych kolumnach i potem na tej samej zasadzie w innych co powoduje zbyt dużo wyników i na tej zasadzie nie wyciągnę tylko tego jednego zbioru .
Chyba wszystko działa poprawnie .
zrobię test na tych tabelach gdzie wynik będzie tylko jeden tzn będzie mógł być tylko jeden oczekiwany wynik ; pozostałe liczby dobiorę tak aby nie występowały wspólnie z innymi po to aby sprawdzić jak wyświetlany jest w kwerendzie poszukiwany przezemnie ciąg .
Ogólnie pomoc się przydała i jak na moje kilkudniowe doświadczenie z Base jestem zadowolony z rezultatów za co dziękuje .
( można zapisać kwerendę w notatniku lub arkuszu kalkulacyjnym ? )
Ogólnie kwerenda wybiera właściwie i distinct działa poprawnie .
Popróbuję jeszcze z nawiasami wtedy może będzie mniejsza ilość wierszy .
aha byłbym zapomniał odpowiedzieć na pytanie - to co musi się zgadzać to akurat z tych wartości w tabelach wynik ( te 8 liczb )
Chyba będę potrzebował jakieś dodatkowe kryterium wyboru bo jeżeli wyników jest wiele to znaczy że mimo dobrych założeń są inne liczby występujące w tej tabeli które na takiej samej zasadzie tworzą mi ciąg 8 liczb lecz złożony z zupełnie innych liczb .
Uważam że wybrałem wszystkie możliwości a to że wyników jest wiele to znaczy że wiele różnych liczb występuje w tych samych kolumnach i potem na tej samej zasadzie w innych co powoduje zbyt dużo wyników i na tej zasadzie nie wyciągnę tylko tego jednego zbioru .
Chyba wszystko działa poprawnie .
zrobię test na tych tabelach gdzie wynik będzie tylko jeden tzn będzie mógł być tylko jeden oczekiwany wynik ; pozostałe liczby dobiorę tak aby nie występowały wspólnie z innymi po to aby sprawdzić jak wyświetlany jest w kwerendzie poszukiwany przezemnie ciąg .
Ogólnie pomoc się przydała i jak na moje kilkudniowe doświadczenie z Base jestem zadowolony z rezultatów za co dziękuje .
( można zapisać kwerendę w notatniku lub arkuszu kalkulacyjnym ? )
OpenOffice.ux.pl.3.4 na Windows XP
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Tak sądziłem, że kryteria są dobierane doraźnie. Warto je głębiej przemyśleć.nowicjusz pisze:Chyba będę potrzebował jakieś dodatkowe kryterium wyboru bo jeżeli wyników jest wiele to znaczy że mimo dobrych założeń są inne liczby występujące w tej tabeli które na takiej samej zasadzie tworzą mi ciąg 8 liczb lecz złożony z zupełnie innych liczb .
Można. Ale można też zapisać w pliku odb zarejestrowanym jako źródło danych, i wyzwalać odpowiedzi w arkuszu, poprzez Źródła Danych (F4).( można zapisać kwerendę w notatniku lub arkuszu kalkulacyjnym ? )
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Łączenie wielu tabel ( jak wielokrotnie użyć FROM )
Nie sądziłem że to takie poste - mogłem się domyślić że jeśli można przeciągnąć z arkusza rekordy do Tabeli to można też w drugą stronę z tabeli lub kwerendy do arkusza
Temat z łączeniem tabel kończę do czasu kolejnego zapytania .

Temat z łączeniem tabel kończę do czasu kolejnego zapytania .
OpenOffice.ux.pl.3.4 na Windows XP