Hej igen,
Nu behöver jag hjälp i rätt riktning igen.
Från relationsdatabasen med några JOINs, "WHERE" och "AND"-satser så vill jag i från detta urvalet räkna ut hur många rader som har t.ex. ColorID 1, och 2, osv.
Såhär kan urvalet se ut.
BilID---ColorID-----TillbehörsID
1------8----------4
2------9----------7
3------3----------4
3------3----------8
3------3----------9
4------7----------3
Nu vill jag alltså distinct räkna hur många Bilar som har ColorID 8 osv. sedan vill jag räkna hur många bilar som har TillbehörsID 4 osv..
Som ni ser blir det knas när en bil kan ha flera tillbehör, då får bilen också samma ColorID flera gånger..
Hur löser man en sådan fråga på bästa sätt? Nu har jag löst det med enskilda frågor, men vill bara gå till databasen EN gång o hämta resultatet. Är det flera unions vi pratar om?
/Claysson
Peter SMedlem sedan dec. 20025 483 inlägg Hur många bilar med resp. färg: select colorid, count(*) from tbl group by colorid
Hur många bilar som har resp. tillbehör: select tillbehörsid, count(*) from tbl group by tillbehörsid
Det kan nog bli knepigt att slå ihop dessa på ett bra sätt. Det du möjligtvis skulle kunna göra är följande:
select colorid, count(*) from tbl group by colorid
union all
select -1, -1
union all
select tillbehörsid, count(*) from tbl group by tillbehörsid
Om ordningen är deterministisk i det avseendet att resultat 1 kommer först, resultat 2 därefter o.s.v. så vet du var respektive frågas resultat börjar och slutar om (-1, -1) agerar avgränsare.
Peter S skrev:
select colorid, count(*) from tbl group by colorid
union all
select -1, -1
union all
select tillbehörsid, count(*) from tbl group by tillbehörsid
Ja, det var såhär jag funderade på om man skulle göra. Min "tbl" i detta fallet är dock en uträkning på över 100 rader, men peta in den i en function som returnerar denna tabell kanske vore det bästa. Tack för rådet, ska testa!
En generell prestandafråga, är det bättre att slå ihop två tabeller med "union" istället för att göra två slagningar mot databasen?