Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.databases.ms-sqlserver    |    Notorious Rube Goldberg contraption    |    19,505 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 18,683 of 19,505    |
|    Tony Johansson to All    |
|    how to use case in sql query    |
|    09 Jul 12 18:48:05    |
   
   From: johansson.andersson@telia.com   
      
   Hello!   
      
   The passed orderBy parameter string can consist of one of these 8   
   possibilities   
   The code is at the end.   
      
   TicketID ASC   
   TicketI DESC   
   Priority ASC   
   Priority DESC   
   CreatedDate ASC   
   CreatedDate DESC   
   Owner ASC   
   Owner DESC   
      
   I want to sort in the way that the given parameter orderBy is specified.   
   It would be easy to use string.format but I hope that I can avoid that   
   because of sql injection   
      
   I hope somebody know how to fix this in an easy way without using   
   string.format.   
   I tried below but I get error probably of not understanding this fully.   
   It must be an easier way to use case then I have done below.   
   It seems like a lot of writing whan I have the sort expression ready to be   
   used.   
      
   public DataSet GetTicketDetail(ListItem owner, string orderBy)   
    {   
    SqlCommand cmd;   
    if (owner.Text == "*") // All tickets that has an owner   
    {   
    string query = "SELECT Tickets.TicketID, Tickets.HeadLine,   
   Tickets.Description, " +   
    "Tickets.Priority, Tickets.CreatedTicket,   
   Users.Owner, Tickets.Complete, TicketType.Name " +   
    "FROM Tickets " +   
    "JOIN Users ON " +   
    "Users.UserID = Tickets.UserID " +   
    "JOIN TicketType ON " +   
    "TicketType.TicketTypeID = Tickets.TicketTypeID   
   " +   
    "where Tickets.UserID != @UserID " +   
    "ORDER BY " +   
    "CASE WHEN @orderBy = 'TicketID ASC' " +   
    "THEN TicketID END ASC, " +   
    "CASE WHEN @orderBy = 'TicketID DESC' " +   
    "THEN TicketID END DESC, " +   
    "CASE WHEN @orderBy = 'Priority ASC' " +   
    "THEN Priority END ASC, " +   
    "CASE WHEN @orderBy = 'Priority DESC' " +   
    "THEN Priority END DESC, " +   
    "CASE WHEN @orderBy = 'CreatedDate ASC' " +   
    "THEN CreatedDate END ASC, " +   
    "CASE WHEN @orderBy= 'CreatedDate DESC' " +   
    "THEN CreatedDate END DESC, " +   
    "CASE WHEN @orderBy= 'Owner ASC' " +   
    "THEN Owner END ASC, " +   
    "CASE WHEN @orderBy= 'Owner DESC' " +   
    "THEN Owner END DESC " +   
    "SELECT   
   TicketDetail.TicketDetailID,TicketDetail.TicketID, TicketDetail.Action, " +   
    "Users.Owner, TicketDetail.CreatedDate,   
   TicketDetail.UserID,TicketDetail.Status " +   
    "FROM [TicketDetail] " +   
    "JOIN Users ON " +   
    "Users.UserID = TicketDetail.UserID";   
      
    cmd = new SqlCommand(query);   
    cmd.Parameters.AddWithValue("@UserID",   
   GetIDForNonAssignedTickets());   
    return FillDataSet(cmd, "Tickets");   
    }   
   }   
   //Tony   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca