Avatar billede jenslyn_s Nybegynder
20. august 2007 - 15:33 Der er 6 kommentarer og
1 løsning

Justering af query

Hej,

Har denne lettere omfattende query, som jeg ikke kan få til at spille. Problemet er at den ikke tager rækker i "category" med når  "battle" er tom. Hvordan kan tilpasse, så den viser alle rækker i category?


select category.category_id, category.name,stc.antal,section.name as catName,count(battle.battle_id) as numbattles
from used_battles
          inner join battle on  battle.battle_id = used_battles.battle_id
          right join category on battle.category_id = category.category_id
          inner join section on category.section_id = section.section_id
          inner join (select count(*) as antal,category_id from star_to_category group by category_id)stc on stc.category_id =category.category_id
group by category.category_id ,category.name,section.name,stc.antal
order by category_id asc
Avatar billede lorentsnv Nybegynder
20. august 2007 - 16:29 #1
Ved brug af inner join, afgrænser du antal records, til kun der records hvor der er match på join kriterie. Ved brug af left join eller right join, kan du bede om alle records fra tabellen på henholdsvis venstre/højre siden af join.
Avatar billede lorentsnv Nybegynder
20. august 2007 - 16:31 #2
Skulle du bruge en left join, i stedet for rigth join på category?

select category.category_id, category.name,stc.antal,section.name as catName,count(battle.battle_id) as numbattles
from used_battles
          inner join battle on  battle.battle_id = used_battles.battle_id
          left join category on battle.category_id = category.category_id
          inner join section on category.section_id = section.section_id
          inner join (select count(*) as antal,category_id from star_to_category group by category_id)stc on stc.category_id =category.category_id
group by category.category_id ,category.name,section.name,stc.antal
order by category_id asc
Avatar billede lorentsnv Nybegynder
20. august 2007 - 16:34 #3
Et hurtig omskrevet forslag, hvor du starter med category, hvis det er din 'hovedtabel':

select category.category_id, category.name,stc.antal,section.name as catName,count(battle.battle_id) as numbattles
from category
          left join battle on  battle.category_id = category.category_id
          left join used_battles on  battle.battle_id = used_battles.battle_id
          left join section on category.section_id = section.section_id
          left join (select count(*) as antal,category_id from star_to_category group by category_id)stc on stc.category_id =category.category_id
group by category.category_id ,category.name,section.name,stc.antal
order by category_id asc
Avatar billede jenslyn_s Nybegynder
20. august 2007 - 16:36 #4
Hmm, løser det ikke... problemet er vel at der vælges, først, fra used_battles og ikke category?
Avatar billede jenslyn_s Nybegynder
20. august 2007 - 16:48 #5
Edit: Læste ikke din post 16:34, den virker efter hensigten.
Avatar billede jenslyn_s Nybegynder
20. august 2007 - 17:05 #6
Smid et svar, og tak for hjælpen.
Avatar billede lorentsnv Nybegynder
20. august 2007 - 21:57 #7
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester