/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste