|
| Count funktion driller mig hvorfor nu det.~ Fra : Magnus |
Dato : 04-04-06 16:30 |
|
Med denne stump koder sammenkæder jeg en række tabeller fra MySQL og får
vist en fin liste over de ønskede informationer. Men så vil jeg fjerne alt
mellem "SELECT" og "FROM" og kun indsætte "COUNT(Kampkalender.kampid) AS
Antal" således at den tæller alle poster med forskelligt nr i feltet
"kampid"
Men den tæller at der kun er 1 post i tabellen selv om der er ca. 20... Hvad
er det som driller denne COUNT-funktion ?
/Magnus
Eksempel 1:
SQL="SELECT"
SQL=SQL+" Kampkalender.kampid,"
SQL=SQL+" Kampkalender.kampdato,"
SQL=SQL+" Kampkalender.hold,"
SQL=SQL+" Kampkalender.ude,"
SQL=SQL+" Kampkalender.stadion,"
SQL=SQL+" Kampkalender.kamptype,"
SQL=SQL+" Kampkalender.bmal,"
SQL=SQL+" Kampkalender.mmal,"
SQL=SQL+" Hold.klub,"
SQL=SQL+" Busture.ref,"
SQL=SQL+" Busture.afgang,"
SQL=SQL+" Busture.id AS busid,"
SQL=SQL+" Billeder.ref,"
SQL=SQL+" Billeder.id AS fotoid,"
SQL=SQL+" Media.ref,"
SQL=SQL+" Media.id AS mediaid,"
SQL=SQL+" Kamptyper.kamptypeid,"
SQL=SQL+" Kamptyper.kampkat,"
SQL=SQL+" Kamptyper.turnering,"
SQL=SQL+" Kamptyper.runde"
SQL=SQL+" FROM Kampkalender"
SQL=SQL+" LEFT JOIN Hold ON Kampkalender.hold=Hold.klubid"
SQL=SQL+" LEFT JOIN Busture ON Kampkalender.kampid=Busture.ref"
SQL=SQL+" LEFT JOIN Kamptyper ON Kampkalender.kamptype=Kamptyper.kamptypeid"
SQL=SQL+" LEFT JOIN Billeder ON Kampkalender.kampid=Billeder.ref"
SQL=SQL+" LEFT JOIN Media ON Kampkalender.kampid=Media.ref"
SQL=SQL+" GROUP BY Kampkalender.kampid"
SQL=SQL+" ORDER BY kampdato"
Eksempel 2:
SQL="SELECT COUNT(Kampkalender.kampid) AS Antal"
SQL=SQL+" FROM Kampkalender"
SQL=SQL+" LEFT JOIN Hold ON hold=Hold.klubid"
SQL=SQL+" LEFT JOIN Busture ON Kampkalender.kampid=Busture.ref"
SQL=SQL+" LEFT JOIN Kamptyper ON Kampkalender.kamptype=Kamptyper.kamptypeid"
SQL=SQL+" LEFT JOIN Billeder ON Kampkalender.kampid=Billeder.ref"
SQL=SQL+" LEFT JOIN Media ON Kampkalender.kampid=Media.ref"
SQL=SQL+" GROUP BY Kampkalender.kampid"
| |
Kristian Damm Jensen (04-04-2006)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 04-04-06 19:47 |
|
Magnus wrote:
> Med denne stump koder sammenkæder jeg en række tabeller fra MySQL og
> får vist en fin liste over de ønskede informationer. Men så vil jeg
> fjerne alt mellem "SELECT" og "FROM" og kun indsætte
> "COUNT(Kampkalender.kampid) AS Antal" således at den tæller alle
> poster med forskelligt nr i feltet "kampid"
>
> Men den tæller at der kun er 1 post i tabellen selv om der er ca.
> 20... Hvad er det som driller denne COUNT-funktion ?
>
> /Magnus
>
>
> Eksempel 1:
> SQL="SELECT"
> SQL=SQL+" Kampkalender.kampid,"
> SQL=SQL+" Kampkalender.kampdato,"
> SQL=SQL+" Kampkalender.hold,"
> SQL=SQL+" Kampkalender.ude,"
> SQL=SQL+" Kampkalender.stadion,"
> SQL=SQL+" Kampkalender.kamptype,"
> SQL=SQL+" Kampkalender.bmal,"
> SQL=SQL+" Kampkalender.mmal,"
> SQL=SQL+" Hold.klub,"
> SQL=SQL+" Busture.ref,"
> SQL=SQL+" Busture.afgang,"
> SQL=SQL+" Busture.id AS busid,"
> SQL=SQL+" Billeder.ref,"
> SQL=SQL+" Billeder.id AS fotoid,"
> SQL=SQL+" Media.ref,"
> SQL=SQL+" Media.id AS mediaid,"
> SQL=SQL+" Kamptyper.kamptypeid,"
> SQL=SQL+" Kamptyper.kampkat,"
> SQL=SQL+" Kamptyper.turnering,"
> SQL=SQL+" Kamptyper.runde"
>
> SQL=SQL+" FROM Kampkalender"
> SQL=SQL+" LEFT JOIN Hold ON Kampkalender.hold=Hold.klubid"
> SQL=SQL+" LEFT JOIN Busture ON Kampkalender.kampid=Busture.ref"
> SQL=SQL+" LEFT JOIN Kamptyper ON
> Kampkalender.kamptype=Kamptyper.kamptypeid" SQL=SQL+" LEFT JOIN
> Billeder ON Kampkalender.kampid=Billeder.ref" SQL=SQL+" LEFT JOIN Media ON
> Kampkalender.kampid=Media.ref"
>
> SQL=SQL+" GROUP BY Kampkalender.kampid"
> SQL=SQL+" ORDER BY kampdato"
>
>
>
>
>
> Eksempel 2:
> SQL="SELECT COUNT(Kampkalender.kampid) AS Antal"
> SQL=SQL+" FROM Kampkalender"
> SQL=SQL+" LEFT JOIN Hold ON hold=Hold.klubid"
> SQL=SQL+" LEFT JOIN Busture ON Kampkalender.kampid=Busture.ref"
> SQL=SQL+" LEFT JOIN Kamptyper ON
> Kampkalender.kamptype=Kamptyper.kamptypeid" SQL=SQL+" LEFT JOIN
> Billeder ON Kampkalender.kampid=Billeder.ref" SQL=SQL+" LEFT JOIN Media ON
> Kampkalender.kampid=Media.ref"
>
> SQL=SQL+" GROUP BY Kampkalender.kampid"
Du kan ikke gruppere efter samme kolonne som du tæller på. Det er
meningsløst.
Du har brug for enten at tælle det hele
SELECT COUNT(Kampkalender.kampid) AS Antal
FROM Kampkalender
LEFT JOIN Hold ON hold=Hold.klubid
LEFT JOIN Busture ON Kampkalender.kampid=Busture.ref
LEFT JOIN Kamptyper ON Kampkalender.kamptype=Kamptyper.kamptypeid
LEFT JOIN Billeder ON Kampkalender.kampid=Billeder.ref
LEFT JOIN Media ON Kampkalender.kampid=Media.ref
eller at tælle pr. kampid
SELECT Kampkalender.kampid, COUNT(*) AS Antal
FROM Kampkalender
LEFT JOIN Hold ON hold=Hold.klubid
LEFT JOIN Busture ON Kampkalender.kampid=Busture.ref
LEFT JOIN Kamptyper ON Kampkalender.kamptype=Kamptyper.kamptypeid
LEFT JOIN Billeder ON Kampkalender.kampid=Billeder.ref
LEFT JOIN Media ON Kampkalender.kampid=Media.ref
GROUP BY Kampkalender.kampid
Det er ikke muligt for mig at afgøre hvad du egentlig ønsker.
--
Kristian Damm Jensen
| |
Magnus (04-04-2006)
| Kommentar Fra : Magnus |
Dato : 04-04-06 20:00 |
|
> Det er ikke muligt for mig at afgøre hvad du egentlig ønsker.
>
Jeg har brug for at tælle antallet af "Kampkalender.kampid"
.....
LEFT JOIN Billeder ON Kampkalender.kampid=Billeder.ref
.....
Jeg sammenkæder det på denne måde da jeg vil have alle poster i Billeder som
referere (ref) til en kamp i kampkalendern (kampid) men for også at få
vist/talt de kampe som ikke har en referance i tabellen "Billeder".
/Magnus
| |
Kristian Damm Jensen (04-04-2006)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 04-04-06 21:00 |
|
Magnus wrote:
>> Det er ikke muligt for mig at afgøre hvad du egentlig ønsker.
>>
>
> Jeg har brug for at tælle antallet af "Kampkalender.kampid"
>
> ....
> LEFT JOIN Billeder ON Kampkalender.kampid=Billeder.ref
I så fald er det min første løsning du skal bruge. Den kan dog forsimples:
SELECT COUNT(Kampkalender.kampid) AS Antal
FROM Kampkalender
alle de øvrige tabeller kan nemlig på ingen måde ændre antallet af rækker i
resultatet.
> ....
> Jeg sammenkæder det på denne måde da jeg vil have alle poster i
> Billeder som referere (ref) til en kamp i kampkalendern (kampid) men
> for også at få vist/talt de kampe som ikke har en referance i
> tabellen "Billeder".
Men du har - når du tæller - slet ikke brug for at inkludere Billeder i dit
join.
--
Kristian Damm Jensen
| |
|
|