Dane z kilku tabel w jednym raporcie

Użytkowanie programu bazodanowego

Dane z kilku tabel w jednym raporcie

Postprzez fliper_katrill » Śr lis 02, 2016 3:44 pm

Witam serdecznie. Nie zakładam, że dalej będę prowadził swoją przygodę z Basem, oczekuję pomocy tylko w jednym zagadnieniu, zatem spójrzcie proszę na mnie łaskawym okiem. Pewnie rozwiązanie jest dla Was prozaiczne. Mam 15 tabel ze sprzętem. cpu, monitory, upsy itd. W każdej z nich jest to samo: ID, model, cena, nr i właściciel. Każda jest uzupełniona. Docelowo chciałbym móc odpowiedzieć na pytanie: Jaki sprzęt ma Kowalska? i w raporcie chciałbym aby Base znając właściciela z każdej grupy urządzeń wypisał ten sprzęt. Czy to trudne, jak się do tego zabrać? Jak napisałem pojedyncze tabele mam gotowe... Dziękuję z góry za pomoc :)
OpenOffice 4.1.1 Windows XP
fliper_katrill
 
Posty: 1
Dołączył(a): Śr lis 02, 2016 3:33 pm

Re: Dane z kilku tabel w jednym raporcie

Postprzez Jan_J » Śr lis 02, 2016 6:41 pm

#1

Do takich zastosowań zwykle służy SQL-owa operacja UNION, odpowiadająca obliczeniu sumy zbiorów. Problematyczne są dwie kwestie: implementacja standardu SQL we wbudowanej bazie HSQLDB oraz kontrola poprawności zapytania przeprowadzana w Base przy konstruowaniu kwerendy.

Czy Base obsłuży zapytanie postaci
Kod: Zaznacz cały   Rozszerz widokZwiń widok
(SELECT blabla1 FROM t1) UNION (SELECT blabla2 FROM t2)
Szybki test wskazuje, że nie.

A to dlatego, że Base wymaga, by kwerenda była opisana operacją SELECT, a nie jako wynik działania algebry relacyjnej, jakim jest UNION. Zaakceptuje więc pytanie postaci
Kod: Zaznacz cały   Rozszerz widokZwiń widok
SELECT * FROM ((SELECT blabla1 FROM t1) UNION (SELECT blabla2 FROM t2))
Szybki test wskazuje, że się tak da.

Wielokrotne gromadzenie wyników przez UNION, czyli
Kod: Zaznacz cały   Rozszerz widokZwiń widok
(zapytanie) UNION (zapytanie) UNION (zapytanie) itd.
też jest dozwolone. Powtórzenia identycznych rekordów pojawią się na wyjściu tylko raz.

Warunkiem powodzenia operacji UNION jest formalna zgodność postaci tabel wynikowych. Wszystkie wewnętrzne SELECT-y winny generować tabele o takim samym układzie kolumn.

#2

Być może łatwiej byłby uzyskać odpowiedź na podstawie inaczej zaprojektowanej jednej tabeli sprzęt(id, user_id, kategoria_id, ...). Ale wtedy mogłyby wystąpić trudności w innych miejscach, np. w związku ze zróżnicowaniem parametrów opisujących poszczególne grupy sprzętu.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3926
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 1 gość

cron