webForumDet fria alternativet

Hämta med en fråga

3 svar · 454 visningar · startad av Claysson

ClayssonMedlem sedan jan. 200454 inlägg
#1

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
#2

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.

ClayssonMedlem sedan jan. 200454 inlägg
#3

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!

ClayssonMedlem sedan jan. 200454 inlägg
#4

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?

129 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)