2017-03-26 2 views
0

Ich habe Probleme mit der Kombination der 2 Aussagen.SQL-Anweisung kombinieren zählen 2 Aussagen Ergebnisse

Ich habe eine festivalTable über die Sie abstimmen können =>voteTable. und für besondere Anlässe können Sie auch eine specialVoteTable

für die 2 separaten Tabellen ich habe:

select festivalId as festId, COUNT(festivalId) as total from Vote 
where active = 'J' and FestivalId = 593 
group by FestivalId 

das gleiche gilt für die anderen Tisch. Jetzt muss ich diese 2 Ergebnisse kombinieren, mit der Ausnahme, dass von der specialvote ich es von 8 multiplizieren müssen, also kann ich die Summe von 9.

devide, so dass die zwei separate Abfragen sind

select festivalId as festId, COUNT(festivalId) as total from Vote 
where active = 'J' and FestivalId = 593 
group by FestivalId 

select festivalId as festId, (COUNT(festivalId) * 8) as total from  SpecialChartVote 
where active = 'J' and FestivalId = 593 
group by FestivalId 

(nicht kombiniert mit der festivalTable noch.)

Macht irgendeinen Sinn?

Antwort

2

mit union all in einer Unterabfrage:

select festId, sum(total)/9 as total 
from 
    (
    select 
     festivalId as festId 
    , COUNT(festivalId) as total 
    from Vote 
    where active = 'J' and FestivalId = 593 
    group by FestivalId 
    union all 
    select 
     festivalId as festId 
    , (COUNT(festivalId) * 8) as total 
    from SpecialChartVote 
    where active = 'J' and FestivalId = 593 
    group by FestivalId 
) u 
group by festId 
+0

Sie geteilt nie die Summe durch 9. –

+0

@TimBiegeleisen aktualisiert. Ich war mir nicht sicher, ob er es in derselben Abfrage oder anderswo durch 9 teilen wollte. – SqlZim

0

Ihre Anfrage, wie geschrieben, nur für ein Festival sucht. Das scheint seltsam, aber Sie die Abfragen, indem Sie kombinieren können:

select 593 as festId, 
     ((select count(*) from Vote where active = 'J' and FestivalId = 593) + 
     (select count(*) * 8 from SpecialChartVote where active = 'J' and FestivalId = 593) 
     )/9.0 

SQLZims Antwort ist auf jeden Fall besser, wenn Sie die Informationen für mehrere Festivals erhalten möchten. Ich möchte nur darauf hinweisen, dass Sie „kombinieren“ Ihre Fragen im Wesentlichen, indem Sie:

select (<query1> + <query2>)