Toon posts:

(Access/SQL) Met Union uitvoer naast elkaar?

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

Verwijderd

Topicstarter
Ik heb een klein probleempje met mijn uitvoer!
Ik heb in SQL een beetje geprogrammeert, en dat lukt ook bijna. *D Alleen komen de waarden in de uitvoer onder elkaar te staan ipv naast elkaar. |:(

SELECT Count([Gereed]) AS Totaal
FROM Testformulier
WHERE (([Testformulier].[Id]) Like [Van welk TagNr? (* is alles)])
UNION ALL
SELECT Count([Gereed]) AS Aantal_Gereed
FROM Testformulier
WHERE (([Testformulier].[Id]) Like [Van welk TagNr? (* is alles)])
AND (([Testformulier].[Gereed])=-1)
UNION ALL
SELECT Count([GTI uitgev]) AS Aantal_GTIuitgev
FROM Testformulier
WHERE (([Testformulier].[Id]) Like [Van welk TagNr? (* is alles)])
AND (([Testformulier].[GTI uitgev])=-1)
UNION ALL
SELECT Count([Opdrgvr acc]) AS Aantal_Opdrgvracc
FROM Testformulier
WHERE (([Testformulier].[Id]) Like [Van welk TagNr? (* is alles)])
AND (([Testformulier].[Opdrgvr acc])=-1)
UNION ALL
SELECT Count([Klant acc]) AS Aantal_Klantacc
FROM Testformulier
WHERE (([Testformulier].[Id]) Like [Van welk TagNr? (* is alles)])
AND (([Testformulier].[Klant acc])=-1);

Kan iemand mij hierbij helpen??

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 06:09

Tomatoman

Fulltime prutser

Met UNION voeg je aan een stel records een ander stel records met precies evenveel velden toe. Daarbij moeten de velden uit het eerste deel precies dezelfde vorm (getal, tekst, valuta, etc.) hebben als het tweede deel en ook precies in dezelfde volgorde staan. De veldnamen van de output zijn de veldnamen van het eerste deel van de query. De veldnamen van het tweede deel van de query worden genegeerd.
code:
1
2
3
4
SELECT Voornaam, Achternaam, Leeftijd
FROM Ledentabel
UNION SELECT Voorletters, Achternaam, IQ
FROM Presidenten;

geeft als output zoiets als
code:
1
2
3
4
5
6
Voornaam   Achternaam   Leeftijd
--------   ----------   --------
Pietje     Puk      25
Jan   Klaassen     42
B.     Clinton  88
G.W.     Bush      89

Alles naast elkaar zetten kan als volgt:
code:
1
2
3
SELECT Voornaam, Ledentabel.Achternaam, Leeftijd, Voorletters,
Presidenten.Achternaam AS PresNaam, IQ
FROM Ledentabel, Presidenten;

geeft als output zoiets als
code:
1
2
3
4
5
6
Voornaam   Achternaam   Leeftijd   Voorletters   PresNaam   IQ
--------   ----------   --------   -----------   --------   --
Pietje     Puk      25     B.       Clinton    88
Pietje     Puk      25     G.W.     Bush     89
Jan   Klaassen     42      B.       Clinton    88
Jan   Klaassen     42      G.W.     Bush     89

Als er precies één record in Ledentabel staat en één in Presidenten, bereik je wat jij wilt. Je kunt ook nog wat met
SELECT First(Achternaam) FROM Ledentabel;
proberen.

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
Ja, maar als je alles naast elkaar zet in de SELECT dan gaan ze allemaal voldoen aan 1 en dezelfde WHERE en AND! Terwijl elke Kolom een andere WHERE en AND heeft! Want elke kolom telt alle -1 in zijn eigen kolom! Maar nu telt elke kolom de -1 van de eerste kolom[Gereed]!

Code
SELECT Count([Gereed]) AS Aantal_Gereed,COUNT ([GTI uitgev]) AS Aantal_GTI_Uitgevoerd,COUNT ([Opdrgvr acc]) AS Aantal_Opdrachtgever_Accoord,COUNT ([Klant acc]) AS Aantal_Klant_Accoord
FROM Testformulier
WHERE ((Testformulier.Id) Like [Van welk TagNr? (* is alles)]) AND((Testformulier.Gereed)=-1));


Hoe kan ik er dan voor zorgen dat elke kolom zijn eigen kolom telt op -1?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

verder in [topic=476984] En de volgende keer niet weer zomaar een nieuw topic openen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Dit topic is gesloten.