Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
callevib
Starting Member
5 Posts |
Posted - 2009-03-26 : 06:05:30
|
| I nead help now please.I have 3 tables like this:Address:IdNameectActivites:IdNameActive (bol)etcAdr_akt:AdrIdActIdThe last is a Many To Many realtionI have the following T-Sql query:select k.kndadresseid, k.kndnavn, 'akt1' =case ka.aktid when 1 then 'true' else 'false' end,'akt2' =case ka.aktid when 2 then 'true' else 'false' end,'akt3' =case ka.aktid when 3 then 'true' else 'false' end,'akt4' =case ka.aktid when 4 then 'true' else 'false' end from adresser as kfull join knd_akt as kaon k.kndadresseid = ka.kndadresseidWith a output like this:1241 Frede Hejlskov Jensen true false false false1754 Arne Andersen true false false false1755 Hans Aksel Andersen true false false false1762 Hanne og Flemming Barrett true false false false1762 Hanne og Flemming Barrett false false true false1762 Hanne og Flemming Barrett false false false true1766 Arne Brøgger Christiansen false false true false1766 Arne Brøgger Christiansen true false false false1767 Else Aagaard Christensen false false true false1785 Cai Andersen Hoe false false false trueSo fare very vell.As you se I have some of the names more than on time. How can I avoid this?I have 4 activities in the sample. I only want the activities whitch are activ, which change over time. It means that the numbers off activities had to be dymanic.Is it possible and how can i do this?I want to show the table in a gridview in a web page with checkboxes for the activities.I use MS SQL2005, Asp.net 2.0 (Visual studio 2005) |
|
|
webfred
Master Smack Fu Yak Hacker
8781 Posts |
Posted - 2009-03-26 : 06:31:45
|
When I have a problem then I will give:- create SampleTable- insert SampleData- example outputGreetingsWebfred No, you're never too old to Yak'n'Roll if you're too young to die. |
 |
|
|
callevib
Starting Member
5 Posts |
Posted - 2009-03-26 : 07:50:10
|
| Hope i have explained clear enough.I ask two ?. Can any answer my first? |
 |
|
|
webfred
Master Smack Fu Yak Hacker
8781 Posts |
Posted - 2009-03-26 : 08:04:00
|
You told us about 3 tablesAddressActivitesAdr_aktYou have posted a query that uses none of them.So I think that is not explained clear enough.SorryWebfred No, you're never too old to Yak'n'Roll if you're too young to die. |
 |
|
|
callevib
Starting Member
5 Posts |
Posted - 2009-03-26 : 08:30:53
|
| Ok you are right.I have 3 tabels. The right names are:dbo.Adresser: withkndAdresseIdkndNavnetc.dbo.Aktivitet: withaktIdaktNavnaktAktivetc:dbo.Knd_akt: withkndAdresseidaktIdI do not use the table Aktivitet in my query.The names akt1,akt2.. in my query are just labels. The right will be to use aktName from the table Aktivitet, and only seek aktID in Knd_akt for aktNavn with aktAktiv = true.A query in dbo.knd_akt gives the following:1241 13345 33315 21762 11766 11762 31762 41766 31788 12563 3And a query in dbo.aktivitet looks like:aktId aktNavn Opretdate aktAktiv1 aktTest1 2009-01-21 00:00:00.000 12 aktTest2 2009-01-22 00:00:00.000 03 aktTest3 2009-01-26 00:00:00.000 14 aktTest4 2009-01-26 15:16:02.783 1Hope that helpes |
 |
|
|
callevib
Starting Member
5 Posts |
Posted - 2009-03-26 : 10:44:40
|
| Back again!I have solved my 2. question - the query is now dynamicThe query looks like:declare @navne nvarchar(2000) declare @ider nvarchar(2000)select @ider = aktId, @navne = COALESCE(@navne + ', ' + aktnavn +' = case ka.aktid when ' + @ider + ' then 0 else 1 end' , '' + aktnavn + ' = case ka.aktid when ' + @ider + ' then 1 else 0 end') from aktivitet where aktaktiv = 'TRUE' order by aktid declare @query1 nvarchar(4000) set @query1 = N'select k.kndadresseid, k.kndnavn, ' + @navne + ' from adresser as kfull join knd_akt as kaon k.kndadresseid = ka.kndadresseid'execute(@query1)And the output:ID Name aktTest1 aktTest3 aktTest41241 Frede Hejlskov Jensen 1 1 11754 Arne Andersen 1 1 11755 Hans Aksel Andersen 1 1 11762 Hanne og Flemming Barrett 1 1 11762 Hanne og Flemming Barrett 0 0 11762 Hanne og Flemming Barrett 0 1 01766 Arne Brøgger Christiansen 0 0 11766 Arne Brøgger Christiansen 1 1 11767 Else Aagaard Christensen 0 0 11785 Cai Andersen Hoe 0 1 01788 Kim Hørslev 1 1 1The only problem now is the double names?? |
 |
|
|
callevib
Starting Member
5 Posts |
Posted - 2009-03-26 : 11:01:58
|
The above script generate a query looking like:select k.kndadresseid, k.kndnavn, aktTest1 = case ka.aktid when 1 then 1 else 0 end, aktTest3 = case ka.aktid when 3 then 0 else 1 end, aktTest4 = case ka.aktid when 4 then 0 else 1 end from adresser as kfull join knd_akt as kaon k.kndadresseid = ka.kndadresseid |
 |
|
|
|
|
|
|
|