tantenMedlem sedan nov. 20051 596 inlägg När jag skriver så här så dras inte alla problemID bort. Bara en om det finns någon. Hur skriver man för att den ska räkna med alla?
SELECT placering, count( * ) AS antal
FROM resultat r, lopp l
INNER JOIN starta s ON s.loppID = r.loppID AND r.loppID = l.loppID
WHERE s.stallID =$stallID and typID <5
AND problemID != 9
GROUP BY placering
aasahMedlem sedan mars 20034 471 inlägg Jag är rädd att jag inte förstår frågan. Vad vill du åstadkomma?
tantenMedlem sedan nov. 20051 596 inlägg ProblemID 9 är strukna lopp och ska inte räknas in i antalet sprungna lopp utan resultat, där de nu räknas in. Så om en häst strukits 2 gånger så räknas bara en gång bort som jag skrivit det nu.
Peter SMedlem sedan dec. 20025 483 inlägg Är det inte så att du får ut en kryssprodukt av resultat och lopp med ovanstående fråga? Kanske skulle du ha
SELECT placering, count( * ) AS antal
FROM resultat r, lopp l, starta s
WHERE s.loppid = r.loppid AND r.loppid = l.loppid
AND s.stallID =$stallID and typID <5 and problemID <> 9
GROUP BY placering
tantenMedlem sedan nov. 20051 596 inlägg Peter S...
Jag testade men det blir fortfarande bara en av strykningarna som dras bort.
:-(
yohpopsMedlem sedan feb. 20011 198 inlägg Vilket fält finns i vilken tabell?
tantenMedlem sedan nov. 20051 596 inlägg De ttre inblandade tabellerna ser ut så här
resultat (
loppID int(11) NOT NULL auto_increment,
placering int(11) NOT NULL default '0',
problemID int(2) default '1',
prisSumma int(11) default '0',
tid decimal(3,1) default '0.0',
kommentar text
lopp (
loppID int(11) NOT NULL auto_increment,
banID int(11) NOT NULL default '0',
datum date NOT NULL default '0000-00-00',
loppNr varchar(11) default '0',
typID int(11) default '0'
starta (
loppID int(11) NOT NULL auto_increment,
stallID int(11) NOT NULL default '0',
stracka int(11) NOT NULL default '0',
sparNr int(11) NOT NULL default '0',
kuskID int(11) NOT NULL default '0',
(
yohpopsMedlem sedan feb. 20011 198 inlägg Det ser inte ut att vara något fel på sql-frågan.
Men den kan vara fel i datat.
Eftersom loppid är auto_increment i alla tabeller så blir det lätt missmatch.
tantenMedlem sedan nov. 20051 596 inlägg Ja jag tänkte på det också när jag såg tabellerna så här efter sig. men eftersom loppen matas in efterhand som de ska springas så har det aldrig blivit något fel när det gäller det. Varje tabell har fått rätt ID. Men den räknar inte bort de rader där problemID 9 finns med, mer än en rad. Varför?
yohpopsMedlem sedan feb. 20011 198 inlägg Testa att skriva ut fälten istället för att räkna och se vad du får träff på.
aasahMedlem sedan mars 20034 471 inlägg Du måste joina alla tre tabellerna. Testa följande:
SELECT placering, count( * ) AS antal
FROM (resultat r INNER JOIN lopp l ON r.loppID = l.loppID)
INNER JOIN starta s ON s.loppID = r.loppID
WHERE s.stallID =$stallID and typID <5
AND problemID <> 9
GROUP BY placering
Men... har du ändrat strukturen? Resultat borde ha ett stallid också! Och då blir det:
SELECT placering, count( * ) AS antal
FROM (resultat r INNER JOIN lopp l ON r.loppID = l.loppID)
INNER JOIN starta s ON s.loppID = r.loppID AND s.stallID = r.loppID
WHERE s.stallID =$stallID and typID <5
AND problemID <> 9
GROUP BY placering
tantenMedlem sedan nov. 20051 596 inlägg Jag testade bägge dina förslag aasah men då försvann alla resultat. Ska se om jag kan se varför.
Lade upp en tillfällig sida här http://gotlandssidor.se/simstall/hasten.php?hid=2
riktiga sidan http://gotlandssidor.se/simstall/hast.php?hid=2
Där står 4 oplacerade lopp, ska bara vara 2
aasahMedlem sedan mars 20034 471 inlägg Hjälper detta:
SELECT placering, count( * ) AS antal
FROM resultat r, lopp l,starta s
WHERE r.loppID = l.loppID AND s.loppID = r.loppID AND s.stallID =$stallID and typID <5
AND problemID <> 9
GROUP BY placering
Om stallID finns i resultat lägg med "AND s.stallID =r.stallID " i where satsen.
tantenMedlem sedan nov. 20051 596 inlägg Det är som förut, bara ett struket lopp som räknas bort...
Nåja, nu måste jag återlämna datorn till ägaren. Återkommer kanske senare i kväll om jag får tillgång till någon... Tack så här långt...