Q:

Subquery returning more than 1 value when trying to display images

I am trying to create a Photo Gallery page.
This page will display a number of groups (Tennis, Golf, etc.). Each group can have a number of Photo Collection's and each Collection can have a number of images.
I am using nested repeaters, to first display Group names, then Photo Collection Names and then the images.
If I have one image in a collection, my code works fine. But when I add a second image to the collection, I get the below error in my C# which I have posted below : 

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression

The purpose of this query is to retrieve all images connected to that photo collection.
What changes do I need to make in order to display all images for each collection, rather than just one?
 <div class="panel-heading">
                                <h4 class="panel-title"><%# Eval("Group_Name") %></h4>
                            </div>
                            <div class="panel-body">
                                <asp:Repeater ID="repPhotoAlbums" runat="server" OnItemDataBound="repPhotoAlbums_ItemDataBound">
                                    <ItemTemplate>
                                        <div class="col-lg-12">
                                            <h5><%# Eval("Name") %></h5>
                                            <asp:Repeater ID="repPhotos" runat="server">
                                                <ItemTemplate>
                                                    <a id="imageLink" href='<%# Eval("filename","../Images/{0}") %>' title='<%#Eval("imageDesc") %>' rel="lightbox[Brussels]">
                                                        <asp:Image ID="Image1" ImageUrl='<%# Bind("filename", "../Images/{0}") %>' runat="server" Width="112" Height="84" />
                                                    </a>
                                                </ItemTemplate>
                                            </asp:Repeater>
                                        </div>
                                        <!--col-lg-12-->
                                    </ItemTemplate>
                                </asp:Repeater>
                            </div>
                            <!--panel-body-->

C#:
   protected void repPhotoAlbums_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Repeater repPhotos = (Repeater)(e.Item.FindControl("repPhotos"));

        string Group_Id = DataBinder.Eval(e.Item.DataItem, "p_Collection_Id").ToString();
        //Need to assign the Data in datatable
        SqlDataAdapter sda = new SqlDataAdapter("SELECT Id, filename, imageDesc FROM Group_Images WHERE ID = (Select g_Image_Id = Group_Image_Id FROM Photo_Collection_Images WHERE Photo_Collection_Id = '" + Group_Id + "');", con);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        repPhotos.DataSource = dt;
        repPhotos.DataBind();
    }

}

Also, I can post the SQL tables which store this data if that helps.
Thanks a lot to anyone who can help me.

A:

using exists():
select 
   Id
 , filename
 , imageDesc
from Group_Images as g
where exists (
  select 1 
  from Photo_Collection_Images as i
  where g.Id = i.Group_Image_Id
    and i.Photo_Collection_Id = '" + Group_Id + "'
  )

Note: For actual use, this sort of code needs to use parameters to prevent sql injection.

