Toon posts:

[Access] Count per ID

Pagina: 1
Acties:
  • 59 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb 2 tabellen. 1 tabel (Connecties) die laat zien wat voor berichten er verstuurd worden tussen systemen en een tabel (Systeem) waarin die systemen staan. In de tabel Connecties heb ik dus 2 numerieke velden opgenomen, te weten: ZenderID en OntvangerID. Deze refereren aan SysteemID van de tabel Systeem.

Nu wil ik een count uitvoeren per systeem. Dus ik wil weten naar hoeveel andere systemen 1 systeem berichten stuurt en hoeveel het er ontvangt van andere systemen.

Ik ben aan het werk, dus een verdere uitleg kan nu even niet (voor het geval het bovenstaande onduidelijk is). Met een half uur ben ik hier weer.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

code:
1
Select Count(veldnaam) as Aantal From Tabelnaam GROUP BY tegroeperenveld

?

[ Voor 38% gewijzigd door gorgi_19 op 13-10-2003 14:05 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Batsies
  • Registratie: Mei 2002
  • Laatst online: 27-01-2022

Batsies

E-Developing

Wat heb je zelf al geprobeerd hieraan, het lijkt mij een simpele count met een group by, maar misschien heb je zelf al iets meer info.

E-Developing


  • Dielie
  • Registratie: Februari 2001
  • Laatst online: 20:59

Dielie

*BURP!*

Huh? Wat is je kennis van Access (welke versie trouwens, taal?)? Je kan een selectiequery bouwen en de aantallen genereren door [Totalen - Aantal] toe te voegen aan de query.

Waar gaat het mis?

Verwijderd

Topicstarter
@gorgi: het 'tegroeperenveld' staat niet in de tabel Connecties, maar in de tabel Systeem
@batsies: ik kan je wel een stukje sql geven, maar dat is net zo standaard als wat gorgi hierboven heeft getikt. Als ik het uitbreid naar mijn wensen, gaat access syntaxfouten strooien :s

Er is nog een extra probleempje, ik wil maar van een paar systemen weten hoeveel connecties er zijn. Er staat in de tabel Systeem nog een true/false veld. Alleen de true wil ik weten.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 13 October 2003 @ 14:08:
@gorgi: het 'tegroeperenveld' staat niet in de tabel Connecties, maar in de tabel Systeem
Dan gebruik je een join of een subquery? :?
@batsies: ik kan je wel een stukje sql geven, maar dat is net zo standaard als wat gorgi hierboven heeft getikt. Als ik het uitbreid naar mijn wensen, gaat access syntaxfouten strooien :s
* gorgi_19 wil het iig wel zien. Inclusief de andere versies en de foutmeldingen.
Er is nog een extra probleempje, ik wil maar van een paar systemen weten hoeveel connecties er zijn. Er staat in de tabel Systeem nog een true/false veld. Alleen de true wil ik weten.
Kan je anders in 1 keer opgeven wat het allemaal moet kunnen, en niet verspreid over de posts?

[ Voor 62% gewijzigd door gorgi_19 op 13-10-2003 14:11 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dielie
  • Registratie: Februari 2001
  • Laatst online: 20:59

Dielie

*BURP!*

Die true/false is gewoon een kwestie van het gewenste criterium van het betreffende veld opgeven in de Query builder. :?

Verwijderd

Topicstarter
Hoe moet ik de 2 tabellen koppelen dan? Ik heb dus in Systeem SysteemID en in Connecties OntvangerID en ZenderID die allebei refereren aan dat SysteemID. Dat is het grote probleem eigenlijk...

  • Dielie
  • Registratie: Februari 2001
  • Laatst online: 20:59

Dielie

*BURP!*

Via een join, wat Gorgi al zegt. Zorg dat de twee tabellen in de query geplaatst zijn, en verbind dan de betreffende velden van beide tabellen (slepen). F1 helpt ook!

En als je 'em twee keer nodig hebt, zet je de betreffende tabel gewoon twee keer in de query.

SYSTEEM1......CONNECTIES......SYSTEEM2
SysteemID----ZenderID
....................OntvangerID-----SysteemID

[ Voor 54% gewijzigd door Dielie op 13-10-2003 14:17 . Reden: free layout in post?? ]


Verwijderd

Topicstarter
Thanx Dielie, ik wist dat al wel van het 2 keer weergeven van de tabel, maar ik wist niet dat de query dan automatisch een join aanmaakte. Ik ga even verder proberen. Voor de duidelijkheid, dit is wat ik wil:
- Selecteer alle systemen waar het veld Standaard 'Ja' is,
- Tel van deze systemen alle connecties (in de tabel Connecties) waar het ID voorkomt in ZenderID of OntvangerID

Verwijderd

Topicstarter
Dit is wat ik nu heb:
code:
1
2
3
4
5
SELECT Count(ConnectieID) AS AantalInterfaces, Systeem.SysteemNaam
FROM Systeem AS Systeem_1, Systeem INNER JOIN Connecties ON 
(Systeem.SysteemID = Connecties.ZenderID) AND 
(Systeem.SysteemID = Connecties.OntvangerID)
WHERE (((Systeem.Standaard)=Yes)) GROUP BY Systeem.SysteemNaam;

Helaas geeft dit niet het gewenste resultaat. Ik krijg maar 3 van de ongeveer 10 systemen waar standaard=yes. En het aantal connecties loopt in de honderden, terwijl er in totaal net 100 connecties zijn :S

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 13 October 2003 @ 14:27:
Dit is wat ik nu heb:
code:
1
2
3
4
5
SELECT Count(ConnectieID) AS AantalInterfaces, Systeem.SysteemNaam
FROM Systeem AS Systeem_1, Systeem INNER JOIN Connecties ON 
(Systeem.SysteemID = Connecties.ZenderID) AND 
(Systeem.SysteemID = Connecties.OntvangerID)
WHERE (((Systeem.Standaard)=Yes)) GROUP BY Systeem.SysteemNaam;
Helaas geeft dit niet het gewenste resultaat. Ik krijg maar 3 van de ongeveer 10 systemen waar standaard=yes. En het aantal connecties loopt in de honderden, terwijl er in totaal net 100 connecties zijn :S
Denk eens na??
Je vraagt nu alle gegevens op waarvan het Systeem.SysteemID gelijk is aan Connecties.ZenderID EN gelijk is aan Connecties.OntvangerID. Je krijgt dus nu alleen resultaten terug waarbij ZenderID gelijk is aan ontvanger ID.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
True, OR lost op dat niet alle systemen zijn weergegeven. Toch klopt het aantal connecties per systeem nog steeds niet. Ik check het nog even na...

[ Voor 4% gewijzigd door Verwijderd op 13-10-2003 14:35 ]


Verwijderd

Topicstarter
De laatste stap lukt me niet. Ik heb nu dit:
code:
1
2
3
4
5
6
7
SELECT Count(Connecties.ConnectieID) AS AantalConnecties, 
Systeem.SysteemID, Systeem.SysteemNaam
FROM Systeem AS Systeem_1, Systeem INNER JOIN Connecties 
ON (Systeem.SysteemID = Connecties.OntvangerID) 
OR (Systeem.SysteemID = Connecties.ZenderID)
WHERE (((Systeem.Standaard)=Yes) AND ((Systeem_1.Standaard)=Yes))
GROUP BY Systeem.SysteemID, Systeem.SysteemNaam;


Resultaat is dit:
AantalConnecties | SysteemID
108 | 7
230 | 16
134 | 17
en zo nog een paar

Probleem is dat ik in totaal maar zo'n 100 connecties heb, het aantal connecties klopt dus gewoon niet. Zie ik nog wat over het hoofd?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ja doei het wordt nu te ordinair basic SQL, not to mention een scriptrequest en 'schrijf mijn code'-instelling.

Tip: bezoek www.sqlcourse2.com eens.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.