webForumDet fria alternativet

Slå ihop två sql:er

5 svar · 364 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#1

Jag skulle vilja slå ihop dessa till en, men får inte till det.

select a
from t
	where a like('wis%')
group by a
having count(*) > 2

select b
from t
	where b like('new%')
group by b
having count(*) > 2
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det beror som sig på vad du vill ha för resultat. Rita och berätta lite mer med exempel på datainnehåll och förväntat resultat.

Jesper TMedlem sedan nov. 20017 144 inlägg
#3

Tjo, båda frågorna rör samma tabell.
Men jag kom på att en union gjorde susen. Jag ville presentera resultatet ifrån två kolumner i en och samma nämligen.
/r
Men jag får trubbel om jag vill plussa ihop "count" ifrån båda selecterna.
Om samma ord existerar i båda kolumerna så skrivs båda ut.

select a, count(*)
from t
	where a like('Ap%')
group by a
having count(*) > 2
union
select b, count(*)
from t
	where b like('B%')
group by b
having count(*) > 2

Det verkar ju inte funka att ha agregatfunktionen i group by.

Utan Count:
Apa
Bil
Båt

Med count:
Apa 4
Bil 32
Bil 3
Båt 6

Önskat resultat:
Apa 4
Bil 35
Båt 6

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Tips här?

LarsGMedlem sedan dec. 200012 464 inlägg
#5
select a, sum(c)
from (
select a,count(*) c
  from t
 where a like 'Ap%'
group by a
having count(*) > 2
union all
select b, count(*)
from t
where b like 'B%'
group by b
having count(*) > 2) dt
group by a
Jesper TMedlem sedan nov. 20017 144 inlägg
#6

Härligt, kompis!

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