Suma z połączonych tabel

0

Witam

Słaby jestem z baz danych. Coś tam jednak przez kilka dni wyczytałem i metodą prób i błędów oraz korzystając z wcześniejszego zapytania służącego do innego celu udało mi się osiągnąć takie coś:

SELECT  '' as prod_cell_name,                                   
            (SELECT     COUNT(*) AS Expr1
               FROM          dbo.prod_cell_doc AS pcd
               WHERE      (pcd.prod_cell_id = 101) AND (pcd.product_doc_id = dbo.prod_cell_doc.product_doc_id) AND (pcd.order_number = dbo.prod_cell_doc.order_number))
			                                                                                                        
                      AS glasscnt, product_doc.product_time
FROM  dbo.prod_cell_doc_event 
   JOIN dbo.prod_cell_status ON dbo.prod_cell_doc_event.prod_cell_status_id = dbo.prod_cell_status.id 
   JOIN dbo.prod_cell_doc ON dbo.prod_cell_doc_event.prod_cell_doc_id = dbo.prod_cell_doc.id 
   JOIN dbo.product_doc ON dbo.prod_cell_doc.product_doc_id = dbo.product_doc.id 
   JOIN dbo.doc ON dbo.product_doc.doc_id = dbo.doc.id   
   JOIN dbo.VUsers ON dbo.prod_cell_doc_event.user_id = dbo.VUsers.ID	          
where 1=1 AND prod_cell_doc_event.work_center_id=109 AND prod_cell_doc.prod_cell_id=107 AND prod_cell_doc_event.cd BETWEEN (select TRY_CONVERT(DATE,GETDATE())) AND (select TRY_CONVERT(DATE,(GETDATE()+1)))

Wynik jest taki jak chciałem:

titlesql.JPG

Udało się dostosować tak zapytanie aby tabela pokazywała dzienną produkcję z dnia bieżącego, z konkretnego stanowiska i konkretnego produktu.
Wszystko ładnie pięknie ale potrzebuję jako wynik sumę kolumny "glasscnt" oraz "product_time"

Zbyt skomplikowane to już dla mnie i nie mogę sobie z tym poradzić. Ktoś pomoże? :)

2

Najpierościej?

select s.prod_cell_name, sum(s.glasscnt), sum(s.product_time) from 
(SELECT  '' as prod_cell_name,                                   
            (SELECT     COUNT(*) AS Expr1
               FROM          dbo.prod_cell_doc AS pcd
               WHERE      (pcd.prod_cell_id = 101) AND (pcd.product_doc_id = dbo.prod_cell_doc.product_doc_id) AND (pcd.order_number = dbo.prod_cell_doc.order_number))

                      AS glasscnt, product_doc.product_time
FROM  dbo.prod_cell_doc_event 
   JOIN dbo.prod_cell_status ON dbo.prod_cell_doc_event.prod_cell_status_id = dbo.prod_cell_status.id 
   JOIN dbo.prod_cell_doc ON dbo.prod_cell_doc_event.prod_cell_doc_id = dbo.prod_cell_doc.id 
   JOIN dbo.product_doc ON dbo.prod_cell_doc.product_doc_id = dbo.product_doc.id 
   JOIN dbo.doc ON dbo.product_doc.doc_id = dbo.doc.id   
   JOIN dbo.VUsers ON dbo.prod_cell_doc_event.user_id = dbo.VUsers.ID             
where 1=1 AND prod_cell_doc_event.work_center_id=109 AND prod_cell_doc.prod_cell_id=107 AND prod_cell_doc_event.cd BETWEEN (select TRY_CONVERT(DATE,GETDATE())) AND (select TRY_CONVERT(DATE,(GETDATE()+1)))) s
group by s.prod_cell_name

lub jeśli chcesz po prostu sumę bez podziału an prod_cell_name to wywal tą kolumnę z select i wywal group by

0

Coś nie tak... dostaje błąd:

Błąd !!! nr 0, Tabela:, Invalid column name 'product_cell_name'

1

Działa. Zamiast "product_cell_name" powinno być "prod_cell_name"

0

Dzięki wam udało się zrealizować projekt. Mamy wymarzony licznik dziennej produkcji :)
Założenie było takie, że leci zapytanie do bazy SQL i baza zwraca wynik z dwóch kolumn w jednym ciągu. Warunek taki że ciąg ten będzie się składał zawsze z 6 cyfr.
Wynik wyświetlany będzie za pomocą Raspberry PI i wyświetlacza 7 segmentowego po SPI.
Wyświetlacze i sterowniki są zazwyczaj na 8 cyfr, ja wykorzystać chciałem pierwszych 6 podzielonych w dwie linie. Myślę że obrazek poniżej wyjaśni wszystko:
LED.png

Finalny wynik wygląda tak:
led1.jpg
led2.jpg
led3.jpg

1 użytkowników online, w tym zalogowanych: 0, gości: 1