Select & Select Count in 1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Elio vp

Elio vp

25/11/2010 17:19:34
Quote Anchor link
Goedeavond,

Ik zit al een aantal uren te sukkelen met een query die ik maar niet goed krijg.

Ik veronderstel dat het waarschijnlijk iets niet al te lastig gaat zijn en dat ik weer veel te ver zit te zoeken.

Dit is wat ik wil als output..

+--------------+------------+--------+
| FilID | Filiaal | Aantal |
+--------------+------------+--------+
| 1 | Filiaal1 | 15 |
| 2 | Filiaal2 | 34 |
+--------------+------------+--------+

FilID = telkens het Filiaal ID
Filiaal = de naam van dat Filiaal ID
Aantal = het aantal interventies dat als status (pending of assigned) heeft.


Om het even te verduidelijken..
Elk filiaal kan een interventie ingeven, deze heeft telkens de status: Pending, Assigned of Finished.

Wat ik nu wil doen is een query maken die mij het FiliaalID & filiaal geeft met daarnast een kolom met de hoeveelheid interventies(aantal) die op pending of assigned staat.
Zoals het voorbeeldje hierboven..

Momenteel heb iets zoals dit (werkt niet)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT fil, fname, result
FROM
interventions
(
SELECT status, COUNT(*) AS totaal
FROM interventions
WHERE status = 1 OR status = 2
) AS result


Alle data staat in de table "interventions".. dus ik moet niet gaan werken met joins..

Ik hoop dat het een beetje duidelijk is..


Alvast enorm hartelijk bedankt!!!
 
PHP hulp

PHP hulp

25/11/2024 09:14:26
 

25/11/2010 18:00:57
Quote Anchor link
Euh? Heb je in interventions fil, fname, result en status zitten? Lijkt mij niet correct. Die filiaalnaam hoort daar niet thuis. Je moet je db normaliseren.
 
Elio vp

Elio vp

25/11/2010 19:28:16
Quote Anchor link
Hey Karl,

in interventions zit er dit

| id | status | km | bike | fil | generalcomment

met een aantal voorbeelden

| 1 | 1 | 115 | 14 | 38 | Spaken gebroken |
| 2 | 2 | 134 | 113 | 38 | Voorband stuk |
| 3 | 1 | 004 | 8 | 11 | Volledig pertotal |


En zoals ik eerder vertelde wil ik dit eruithalen


| FilID | Filiaal | Aantal |

| 38 | Filiaal1 | 2 |
| 11 | Filiaal2 | 1 |

Die filiaal naam haal ik met een inner join uit de table Filialen (Dat werkt foutloos)

Ik hoop dat ik het wat duidelijker heb voorgesteld nu.

Hartelijk dank alvast voor je reactie!


Groeten
Gewijzigd op 25/11/2010 19:30:15 door Elio vp
 

25/11/2010 19:32:16
Quote Anchor link
Volgens je query doe je dat dus niet. Je haalt beide uit interventions.
De query die je in dit topic plaatste hoort niet bij wat je wilt en wat je zegt.
 
Elio vp

Elio vp

25/11/2010 19:46:54
Quote Anchor link
Hey,

Ok, akkoord die inner join moet er nog bij

zo dan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT fil, fname, result
FROM
interventions
INNER JOIN fils ON interventions.fil = fils.id
(
SELECT status, COUNT(*) AS totaal
FROM interventions
WHERE status = 1 OR status = 2
) AS result


Of dat die inner join er nu bij staat of niet, het werkt toch niet..
Ik weet dat het ergens mis gaat bij die COUNT.

En eveneens dat het eigenlijk niet goed in elkaar zit want wat ik wil kan ik op deze manier volgens mij niet echt bereiken..

Daarom jullie hulp gevraagd :)

Hartelijk dank
 

25/11/2010 19:53:38
Quote Anchor link
Elio vp op 25/11/2010 19:46:54:
Hey,

Ok, akkoord die inner join moet er nog bij

zo dan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT fil, fname, result
FROM
interventions
INNER JOIN fils ON interventions.fil = fils.id
(
SELECT status, COUNT(*) AS totaal
FROM interventions
WHERE status = 1 OR status = 2
) AS result


Of dat die inner join er nu bij staat of niet, het werkt toch niet..
Ik weet dat het ergens mis gaat bij die COUNT.

En eveneens dat het eigenlijk niet goed in elkaar zit want wat ik wil kan ik op deze manier volgens mij niet echt bereiken..

Daarom jullie hulp gevraagd :)

Hartelijk dank

Als je niet duidelijk script, dan gaat het geheid mis wat je doet. Zelfde geldt hier, als je niet duidelijk bent, dan kan er geen hulp worden geboden.
Verder zou ik als ik jou was eerst eens SQL leren, voor dit geval kan je specifiek naar de volgende links kijken:
http://en.wikipedia.org/wiki/Join_%28SQL%29
http://www.w3schools.com/sql/sql_join_inner.asp
http://www.w3schools.com/sql/sql_join.asp
http://www.sqlbook.com/SQL/INNER-JOIN-37.aspx

Dit is namelijk weer zo'n zelfde probleem als je vorige topic. Dat lijkt mij toch dat er iets niet goed is in je SQL kennis.
 
Elio vp

Elio vp

25/11/2010 20:08:33
Quote Anchor link
Hey,

Ik begrijp niet goed waarom je me tutorials geeft voor sql join?

Er gaat niks mis met die join.. die join werkt perfect..

Die join heeft ook niks te maken met het probleem dat ik heb.. + dat ik daarover helemaal niks gevraagd heb..

Ik vroeg gewoon even hulp bij mijn probleem..

Waar ik binnenin een query wil tellen hoeveel rows er zijn per filiaal met als waarde 1 of 2. En die daarna gewoon laten outputten..

Dus ik moet een Select doen van elk filiaal in de interventionstabel maar ook een count om te tellen hoeveel keer dat filiaal een interventie heeft staan met als statuswaarde 1 of 2.

Voorbeeld:

De tabel die ik heb:
--------------------
| id | status | km | bike | fil | generalcomment
-------------------------------------------------
| 1 | 1 | 115 | 14 | 38 | Spaken gebroken |
| 2 | 2 | 134 | 113 | 38 | Voorband stuk |
| 3 | 1 | 004 | 98 | 11 | Volledig pertotal |
| 4 | 1 | 908 | 199 | 11 | Fietst niet goed |
| 5 | 2 | 404 | 4 | 11 | Platte banden |
| 6 | 2 | 123 | 8 | 38 | Waardeloos spul |
| 7 | 1 | 989 | 14 | 98 | Kader doormidden |


En de output die ik wil hebben.

| FilID | Filiaal | Aantal |
----------------------------
| 38 | Filiaal1 | 3 |
| 11 | Filiaal2 | 4 |
| 98 | Filiaal3 | 1 |


Dat is eigenlijk alles wat ik vraag/wil..

Begrijp me niet verkeerd, ik apprecieer het enorm dat je me "wil" helpen maar met alle respect, die joins daar heb ik momenteel zeer weinig aan.

Nogmaals hartelijk bedankt Karl.
 

25/11/2010 20:27:59
Quote Anchor link
Die query klopt voor geen meter. Onder andere doordat je de join niet goed gebruikt.
Ik wil je best helpen, maar zoals ik zeg, dit is weer hetzelfde als je vorige topic.
Mij lijkt dan ook dat je eerst SQL (ook andere onderdelen die je niet kan) gaat leren voordat je hier komt met je problemen, zo simpel is het.

Sowieso moet je eerst kennis hebben voordat je wat kan, blijkbaar heb jij die kennis niet, dus moet je die eerst gaan leren. Logica.
 
Elio vp

Elio vp

25/11/2010 20:31:07
Quote Anchor link
Akkoord die query klopt voor geen meter.. Maar die join heeft er niks mee te maken..

Als ik nou zeg dat ik als output gewoon het Filid en het aantal wil.. dan heeft die filiaalnaam er niks mee te maken en die Join eveneens ook niet..

Als je me gewoon even in de goede richting kan duwen dan kom ik er wel hoor.. zoals bij die vorige posts.. daar lukte het ook omdat je me gewoon in de goede richting stuurde..

Meer hoef ik niet.. en de correcte query hoeft voor mij zelfs ook niet.; gewoon de goede richting.

Nogmaals bedankt!
 

25/11/2010 20:34:37
Quote Anchor link
De output die je wilt hebben klopt niet met wat jij zegt dat je wilt hebben. De join heeft er alles mee te maken (als je de naam van het filiaal wilt weten).
Ga eerst inderdaad maar eens een query schrijven die alleen de aantallen ophaalt per filiaalid.
 
Elio vp

Elio vp

25/11/2010 20:45:06
Quote Anchor link
Daar begint het probleem al..

Kzou niet direct weten hoe..

En met online tutorials ben ik daar niks mee.. der is geen enkele tutorial die uitlegt hoe je aan zoiets komt.. (ok, misschien wel, maar die kwam ik toch niet direct tegen).

Toevoeging op 25/11/2010 21:17:38:

Ok, ik ben er volledig uit..

Dit is de query die ik nodig had..


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT interventions.fil, fils.fname,
count(interventions.id) as Aantal FROM interventions
INNER JOIN fils ON interventions.fil = fils.id
GROUP BY interventions.fil;



Uiteindelijk toch zelf opgelost.. :-)

Toch bedankt voor je moeite Karl!
 

25/11/2010 21:35:35
Quote Anchor link
't is toch basiskennis, group by...
 
Elio vp

Elio vp

25/11/2010 21:36:48
Quote Anchor link
inderdaad,

Maar ik zat zo te knosselen met die Count.. en ik begrijp eigenlijk niet waarom want het wijst zijn eigen uit..

Maar goed, het is opgelost..

Nogmaals bedankt Karl ;)
 



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.