webForumDet fria alternativet

två sql satser som jag vill ska bli en

Databaser & SQL

4 svar · 188 visningar · startad av hakan@4u2.se

Medlem sedan aug. 2000333 inlägg
Frågan#1

Har 2st sql satser som jag vill att det ska bli till 1st istället

Den första sql satsen1 plockar ut "ref_id_history" och loopar den tills alla "ref_id_history" är slut, i loppen körs SQL sats2 som räknar ut antal!

Borde gå att få till 1st istället eller?

Det jag vill ha ut är 'namn', 'datum', 'antal'!

SQL sats1

 SELECT  ref_id_history, namn, datum  FROM history

SQL sats2

 SELECT    COUNT(deltagare_id) AS antal
 FROM        deltagare_statistik
 GROUP BY ref_id_history 
 HAVING      ref_id_history = 70
Medlem sedan sep. 20026 425 inlägg
#2

Använda underfrågor, så kallade subqueries?

SELECT  ref_id_history, namn, datum,
(SELECT COUNT(deltagare_id)
FROM deltagare_statistik
GROUP BY ref_id_history 
HAVING ref_id_history = 70) AS antal FROM history,deltagare_statistik

I och för sig en vild gissning om det fungerar, är osäker på om det går bra med GROUP BY och HAVING i subqueries.. Men du kan ju testa! :)

Medlem sedan aug. 2000333 inlägg
#3

Underfrågor är nog rätt modell, men värdet i ref_id_history är olika beroende på vad det är i "SELECT ref_id_history, namn, datum FROM history"

tex
ref_id_history = 70
ref_id_history = 71
ref_id_history = 72 osv

Medlem sedan dec. 200012 464 inlägg
#4
SELECT    COUNT(deltagare_id) AS antal,
history.ref_id_history, namn, datum  
FROM history left join deltagare_statistik 
on history.ref_id_history = deltagare_statistik. ref_id_history
 GROUP BY history.ref_id_history , namn, datum

Not:

having behövs enbart om man behöver ställa villkor som innehåller aggregatfunktioner.

Medlem sedan aug. 2000333 inlägg
#5

Tack!

Du är en klippa LarsG

252 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)