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)
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!!!
?
Onbekende gebruiker
25-11-2010 18:00
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 [google]normaliseren[/google].
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
?
Onbekende gebruiker
25-11-2010 19:32
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.
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
?
Onbekende gebruiker
25-11-2010 19:53
Elio vp op 25/11/2010 19:46:54
Hey,
Ok, akkoord die inner join moet er nog bij
zo dan
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..
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.
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.
?
Onbekende gebruiker
25-11-2010 20:27
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.
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!
?
Onbekende gebruiker
25-11-2010 20:34
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.
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).
[size=xsmall]Toevoeging op 25/11/2010 21:17:38:[/size]
Ok, ik ben er volledig uit..
Dit is de query die ik nodig had..
SELECT interventions.fil, fils.fname,
count(interventions.id) as Aantal FROM interventions
INNER JOIN fils ON interventions.fil = fils.id
GROUP BY interventions.fil;