Aantallen tellen in een tabel, maar exclude data van ander

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis WhoCares

Dennis WhoCares

13/05/2020 16:16:47
Quote Anchor link
Hi all,

Ik heb 2 tabellen.
A:
id
datetime
serial
type

B:
id
datetime
serial
type

Nou wil ik het aantal serial nummers hebben uit tabel A met type "C" van vorige maand (whatever maakt even niet uit, kan in voorbeeld zelfs weg gelaten worden)
MAAR
de serienummers die in B voorkomt moet ik NIET meetellen..

Nou doe ik het met 2 losse queries.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT COUNT(serial) FROM A WHERE type = "C" AND (DATEPART(week, datetime) = 15 OR DATEPART(week, datetime) = 16 OR DATEPART(week, datetime) = 17 OR DATEPART(week, datetime) = 18) AND DATEPART(yyyy, datetime) = 2020


Nou moeten alleen de serienummers die ook nog in B voorkomen er vanaf.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT COUNT(a.[t_serial])
        FROM A a
        RIGHT JOIN B b
        ON b.serial = a.serial
        WHERE a.Type = "C"
AND (DATEPART(week, a.datetime) = 15 OR DATEPART(week, datetime) = 16 OR DATEPART(week, datetime) = 17 OR DATEPART(week, datetime) = 18) AND DATEPART(yyyy, datetime) = 2020


En deze aantal aftrekken van de ander, maar.... Ik krijg nou dubbele results in de 2e query..
1 is van A en 1 is van B.

Het kan wel zijn, dat het serienummer in B met een andere type voorkomt. Dan alsnog mag ik hem niet meetellen.
Gewijzigd op 13/05/2020 16:17:56 door Dennis WhoCares
 
PHP hulp

PHP hulp

05/02/2023 04:43:28
 
Thomas van den Heuvel

Thomas van den Heuvel

13/05/2020 16:43:08
Quote Anchor link
Zou je geen WHERE NOT EXISTS of WHERE NOT IN kunnen gebruiken ofzo? Of een LEFT/RIGHT JOIN en dan een controle of het serienummer ongelijk is aan NULL.

DATEPART --> er zijn ook functies als WEEK() en YEAR() geloof ik?

> Het kan wel zijn, dat het serienummer in B met een andere type voorkomt. Dan alsnog mag ik hem niet meetellen.
Dus als OF het serienummer OF het type overeen komt in tabel B dan?
 
Dennis WhoCares

Dennis WhoCares

13/05/2020 17:42:49
Quote Anchor link
Je hebt helemaal gelijk, WHERE ... NOT IN ( SELECT serial FROM B WHERE serial is NOT NULL ) geeft me de juiste results terug in 1 keer.

Ik had wellicht moeten vermelden dat het MSSQL was :)

thanks!!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.