Select & Select Count in 1
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)
1
2
3
4
5
6
7
8
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
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!!!
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
De query die je in dit topic plaatste hoort niet bij wat je wilt en wat je zegt.
Ok, akkoord die inner join moet er nog bij
zo dan
Code (php)
1
2
3
4
5
6
7
8
9
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
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
Elio vp op 25/11/2010 19:46:54:
Hey,
Ok, akkoord die inner join moet er nog bij
zo dan
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
Ok, akkoord die inner join moet er nog bij
zo dan
Code (php)
1
2
3
4
5
6
7
8
9
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
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.
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.
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.
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!
Ga eerst inderdaad maar eens een query schrijven die alleen de aantallen ophaalt per filiaalid.
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)
1
2
3
4
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;
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!
't is toch basiskennis, group by...
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 ;)