jeudi 5 février 2015

asp.net Sql Server 2005 how to Combine Multiple Record Values into One Column

I have 5 tables ( movies – categories - movie-catecories - directors-Movie_Directors )


movies movie_Id int title varchar (50)

image varchar(100)


categories cat_Id int cat_name varchar(50)


movie-catecories MovieCatrgory_ID int cat_Id int movie_Id int


directors director_Id int Name varchar(50)


Movie_Directors


MovieDirectors_ID int movie_Id int director_Id int DirectorName varchar(50)


movies


movie_Id title image 1 Hyde Park on Hudson movies/1.jpg 2 Playing for Keeps movies/2.jpg 3 Cheerful Weather for the Wedding movies/3.jpg 4 Heleno movies/4.jpg 8 Deadfall movies/6.jpg


categories


Cat_Id Cat-name 1 Drama 2 Romance 3 Comedy 4 Romance 5 Crime


movie-catecories


MovieCatrgory_ID Cat_Id movie_Id 1 1 1 2 1 2 3 2 3 4 2 4 5 3 8


Directors


Director_ID Name 1 Roger Michell 2 Gabriele Muccino 3 Donald Rice 4 José Henrique Fonseca 5 Sung-Hee Jo


Movie_Directors MovieDirectors_ID movie_Id director_Id DirectorName 1 1 1 Roger Michell 2 1 2 Gabriele Muccino 4 1 3 Donald Rice 5 2 4 José Henrique Fonseca 6 2 5 Sung-Hee Jo



SELECT DISTINCT movies.movie_Id, movies.title, movies.image, Movie_Directors.DirectorName, Movie_Directors.director_Id


FROM movies INNER JOIN Movie_Directors ON movies.movie_Id = Movie_Directors.movie_Id CROSS JOIN directors WHERE (movies.title LIKE '%' + @title + '%')


**Result


Movie_ID tittle image DirectorName director_Id 1 Hyde Park on Hudson movies/1.jpg Roger Michell 1 1 Hyde Park on Hudson movies/1.jpg Gabriele Muccino 2 1 Hyde Park on Hudson movies/1.jpg Donald Rice 3


I want to combine the DirectorName in one record like this


Movie_ID tittle image DirectorName director_Id 1 Hyde Park on Hudson movies/1.jpg Roger Michell, Gabriele Muccino, Donald Rice 1-2-3


I have problem in this code to combine the DirectorName in one record Please help me **



SELECT DISTINCT movies.movie_Id, movies.title, movies.image,


substring( (select ‘; ‘ +Movie_Directors . DirectorName from Movie_Directors inner join movies on Movie_Directors.movie_Id = movies.movie_Id



for xml path(”)), 3, 1000) as CombineDirectorName


FROM movies INNER JOIN Movie_Directors ON movies.movie_Id = Movie_Directors.movie_Id CROSS JOIN directors WHERE (movies.title LIKE '%' + @title + '%')


and display the result in Repeater:



<asp:Repeater ID="Repeater1" runat="server" >
<HeaderTemplate> </HeaderTemplate>
<ItemTemplate>
<div style="width:100%;">

<div class="excerpt">
<a href="movie_details.aspx?id=<%# DataBinder.Eval(Container.DataItem, "movie_Id")%>" class="thumb" title="An image"><img src="<%# DataBinder.Eval(Container.DataItem, "image")%>" alt="Post" style="opacity: 1; float:left; width:80px ; height:100px; border:3px solid #fff ; margin:5px;"></a>
<a href="movie_details.aspx?id=<%# DataBinder.Eval(Container.DataItem, "movie_Id")%>" class="header"><h6><%# DataBinder.Eval(Container.DataItem, "title")%>


<%# DataBinder.Eval(Container.DataItem, " Movie_Directors . DirectorName ")%>



</div>
</div><br />


<hr />
</ItemTemplate>
</asp:Repeater>


C#


protected void LinkButton1_Click(object sender, EventArgs e) {



string cat_id = DropDownList1.SelectedValue;
string keyword = TextBox1.Text;
int? cid = int.Parse(cat_id);

Repeater1.DataSource = dc.StoredProcedure1(TextBox1.Text, TextBox1.Text, cid);
Repeater1.DataBind();

}

Aucun commentaire:

Enregistrer un commentaire