Jag har 2 st tabeller SELECT SUBSTR(cdate,12,2) AS Tiden, cemp, COUNT(result) AS resulten, descr Du har inte berättat vilken databasmotor du använder. Är det så att du vill ha en ANSII SQL kompatibel fråga eller har du bara glömt att tala om det? Ojdå, glömde visst bort... det är en Postgre-databas iaf. Testa det här. Det blir lite krångligare, men bör fungera. Du får lägga in alla klockslag själv... Hur ser datat i tabellerna ut? Hoppsan! Mitt senaste inlägg kan nog orsaka prestandaproblem om tabellen laft är stor. Har putsat upp sql-satsen lite: Pelka´s tips fungerade perfekt! Tackar!sql-sats
laft
-id
-cdate
-cemp
-result
laft_lu
-id
-descr
laft.result = laft_lu.id
Jag vill ha ut antalet laft_lu.descr på varje cemp, för varje timme.
Även 0 om det är så.
Så här långt har jag kommit. Problemet med denna kod är att det blir samma siffra för alla olika laft_lu.descr.
<code>
SELECT SUBSTR(cdate,12,2) AS Tiden, cemp, COUNT(result) AS resulten, descr
FROM laft, laft_lu
GROUP BY Tiden, cemp, descr
ORDER BY Tiden, cemp
</code>
Och med koden nedan så får jag inga 0:or om det är så:
<code>
SELECT SUBSTR(cdate,12,2) AS Tiden, cemp, COUNT(result) AS resulten, descr
FROM laft, laft_lu
WHERE laft.result = laft_lu.id
GROUP BY Tiden, cemp, descr
ORDER BY Tiden, cemp
</code>Sv: sql-sats
FROM laft LEFT OUTER JOIN laft_lu
ON laft.result = laft_lu.id
GROUP BY Tiden, cemp, descr
ORDER BY Tiden, cemp
/mickeSv: sql-sats
Sv: sql-sats
Och wedham.com´s tips fungerade inte.
Jag fick fram ett resultat, men inte som jag vill.
För t.ex. om det är som nu att det är 3 st poster i laft_lu så ska cemp komma upp 3 ggr för varje timme, med en siffra över hur många ggr.
Svårt att förklara känns det som... men förstår du kanske?
Så här blev resultatet utav wedham.com´s sql:
<code>
09 DPA 22 Inget Svar
09 DPA 7 Svar
09 DPA 12 Upptagen
09 KEO 2 Inget Svar
09 KEO 2 Upptagen
09 LTB 2 Inget Svar
09 LTB 2 Svar
10 DPA 2 Inget Svar
10 DPA 2 Upptagen
10 LTB 1 Inget Svar
14 DPA 2 Inget Svar
15 DPA 1 Inget Svar
</code>
Men jag vill att det ska vara bli så här:
<code>
09 DPA 22 Inget Svar
09 DPA 7 Svar
09 DPA 12 Upptagen
09 KEO 2 Inget Svar
09 KEO 0 Svar
09 KEO 2 Upptagen
09 LTB 2 Inget Svar
09 LTB 2 Svar
09 LTB 0 Upptagen
10 DPA 2 Inget Svar
10 DPA 0 Svar
10 DPA 2 Upptagen
10 LTB 1 Inget Svar
10 LTB 0 Svar
10 LTB 0 Upptagen
14 DPA 2 Inget Svar
14 DPA 0 Svar
14 DPA 0 Upptagen
15 DPA 1 Inget Svar
15 DPA 0 Svar
15 DPA 0 Upptagen
</code>Sv: sql-sats
<CODE SQL>
SELECT iv.tiden, iv.cemp, count(laft.result) as resulten, iv.descr
FROM
(
SELECT T.Tiden, LL.descr, LL.id as llid, LA.cemp, LA.id FROM
(
SELECT '00' as Tiden
UNION
SELECT '01' as Tiden
UNION
SELECT '02' as Tiden
-- osv ner till...
UNION
SELECT '23' as Tiden
) T, laft_lu LL, laft LA
) iv LEFT OUTER JOIN laft
on
SUBSTR(cdate,12,2) = iv.Tiden
and
laft.id = iv.id
and
laft.result = iv.llid
group by iv.tiden, iv.cemp, iv.descr
order by iv.tiden, iv.cemp, iv.descr
</CODE>
/PKSv: sql-sats
Skriv in de 2-3 första posterna från båda tabellerna + gärna en tabellspecifikation (CREATE TABLE) så skall vi nog lösa ditt lilla bekymmer :)
(mickeSv: sql-sats
<CODE SQL>
SELECT iv.tiden, iv.cemp, count(laft.result) as resulten, iv.descr
FROM
(
SELECT T.Tiden, LL.descr, LL.id as llid, LA.cemp, LA.id FROM
(
SELECT '00' as Tiden
UNION
SELECT '01' as Tiden
UNION
SELECT '02' as Tiden
-- osv ner till...
UNION
SELECT '23' as Tiden
) T, laft_lu LL, (SELECT DISTINCT cemp, id FROM laft) AS LA
) iv LEFT OUTER JOIN laft
on
SUBSTR(cdate,12,2) = iv.Tiden
and
laft.id = iv.id
and
laft.result = iv.llid
group by iv.tiden, iv.cemp, iv.descr
order by iv.tiden, iv.cemp, iv.descr
</CODE>Sv: sql-sats
Fast om det finns fler alternativ så är dom välkomna, då jag inte riktigt förstår mig på Pelkas =)
Och här kommer det du sökte wedham.com:
<code>
CREATE TABLE "public"."laft"
(
"id" INTEGER NOT NULL ,
"cdate" bool,
"cemp" varchar(3),
"result" INTEGER,
PRIMARY KEY ("id")
)
CREATE TABLE "public"."laft_lu"
(
"id" int2 NOT NULL ,
"descr" varchar(50),
PRIMARY KEY ("id")
)
</code>
Och data för dom båda:
<code>
laft:
1 2004-05-26 10:59:00 DPA 1
2 2004-05-26 11:12:00 TLA 1
3 2004-05-26 11:45:00 DPA 2
laft_lu:
1 Inget
2 Upp
3 Sv
</code>