This is a discussion on SQL stored procedure returns duplicates within the SQL Server forums, part of the Microsoft SQL Server category; --> I am new to SQL and SQL Server world. There must be a simple solution to this, but I'm ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| I am new to SQL and SQL Server world. There must be a simple solution to this, but I'm not seeing it. I am trying to create a crystal report (v8.5) using a stored procedure from SQL Server (v2000) in order to report from two databases and to enable parameters. When I create the stored procedure, it joins multiple one-to-many relationship tables. This results in repeated/duplicate records. Is this an issue that should be solved within the stored procedure, or is this inevitable? If latter, how do you eliminate the duplicates in Crystal Reports? Let's say we have three different tables - Event, Food, Equipment. Each event may have multiple food and multiple equipments; some events may not have food and/or equipments. The stored procedure outcome may look like this: Event Food Food_Qty Equipment Equipment_Qty Event1 Food2 10 Equipment5 1 Event1 Food4 10 NULL NULL Event2 Food4 50 Equipment2 10 Event2 Food4 50 Equipment5 2 Event2 Food1 12 Equipment2 10 Event2 Food1 12 Equipment5 2 As you can see in Event2, for each Food variations, Equipment values repeat. When I am creating a Crystal Reports, I have the duplication problem. What I would like to see in the report is either: Event1 Food2, 10 Equipment5, 1 Food4, 10 Event2 Food4, 50 Equipment2, 10 Food1, 12 Equipment5, 2 OR: Event1 Food2, 10 Food4, 10 Equipment5, 1 Event2 Food4, 50 Food1, 12 Equipment2, 10 Equipment5, 2 Attempt1: Using "Eliminate Duplicate Record" option does not work with the Equipment section since CR does not recognize "Equipment2" in the third line of the table and "Equipment2" in the fifth line of the table as duplicates. Event1 Food2, 10 Equipment5, 1 Food4, 10 Event2 Food4, 50 Equipment2, 10 Equipment5, 2 Food1, 12 Equipment2, 10 (duplication) Equipment5, 2 (duplication) Attempt2: I created group for each category (Event, Food, Equipment), put the data in Group Headers and used "Suppress Section" to eliminate if the same equipments are listed more than once within the Food group. This eliminated the duplication, but the items do not align correctly. Event1 Food2, 10 Equipment5, 1 Food4, 10 Event2 Food4, 50 Equipment2, 10 Equipment5, 2 Food1, 12 (I want this to appear right below the 'Food4, 50' line) I would really appreciate any suggestions! Thank you in advance. |
| |||
| On Mar 23, 4:59 am, yin_n_yan...@yahoo.com wrote: > I am new to SQL and SQL Server world. There must be a simple solution > to this, but I'm not seeing it. I am trying to create a crystal > report (v8.5) using a stored procedure from SQL Server (v2000) in > order to report from two databases and to enable parameters. > > When I create the stored procedure, it joins multiple one-to-many > relationship tables. This results in repeated/duplicate records. Is > this an issue that should be solved within the stored procedure, or is > this inevitable? If latter, how do you eliminate the duplicates in > Crystal Reports? > > Let's say we have three different tables - Event, Food, Equipment. > Each event may have multiple food and multiple equipments; some events > may not have food and/or equipments. The stored procedure outcome may > look like this: > > Event Food Food_Qty Equipment > Equipment_Qty > > Event1 Food2 10 Equipment5 > 1 > Event1 Food4 10 > NULL NULL > Event2 Food4 50 Equipment2 > 10 > Event2 Food4 50 Equipment5 > 2 > Event2 Food1 12 Equipment2 > 10 > Event2 Food1 12 Equipment5 > 2 > > As you can see in Event2, for each Food variations, Equipment values > repeat. When I am creating a Crystal Reports, I have the duplication > problem. > > What I would like to see in the report is either: > > Event1 > Food2, 10 Equipment5, 1 > Food4, 10 > Event2 > Food4, 50 Equipment2, 10 > Food1, 12 Equipment5, 2 > > OR: > > Event1 > Food2, 10 > Food4, 10 > Equipment5, 1 > Event2 > Food4, 50 > Food1, 12 > Equipment2, 10 > Equipment5, 2 > > Attempt1: Using "Eliminate Duplicate Record" option does not work with > the Equipment section since CR does not recognize "Equipment2" in the > third line of the table and "Equipment2" in the fifth line of the > table as duplicates. > > Event1 Food2, 10 Equipment5, 1 > Food4, 10 > Event2 Food4, 50 Equipment2, 10 > Equipment5, 2 > Food1, 12 Equipment2, 10 > (duplication) > Equipment5, 2 > (duplication) > > Attempt2: I created group for each category (Event, Food, Equipment), > put the data in Group Headers and used "Suppress Section" to eliminate > if the same equipments are listed more than once within the Food > group. This eliminated the duplication, but the items do not align > correctly. > > Event1 Food2, 10 Equipment5, 1 > Food4, 10 > Event2 Food4, 50 Equipment2, 10 > Equipment5, 2 > Food1, 12 (I want this to appear right below the > 'Food4, 50' line) > > I would really appreciate any suggestions! Thank you in advance. Hi, When you joined with multiple tables it will produce duplicates. One way is to create a temp table and store the values from one table. Let's say the Event table. Now your rows are fixed and there are no duplicates. Then you update the remaining columns lets say you join with the Food and Equipment table. |
| |||
| On 22 Mar 2007 15:59:59 -0700, yin_n_yang74@yahoo.com wrote: >When I create the stored procedure, it joins multiple one-to-many >relationship tables. This results in repeated/duplicate records. Is >this an issue that should be solved within the stored procedure, or is >this inevitable? If latter, how do you eliminate the duplicates in >Crystal Reports? Hi yin_n_yang74, You are trying to pair basically unrelated things (yes, both equipment and food are related to an event, but there is no relationship between a particular food row for an event and a particular equipment row for the same event). That's why the join causes the information to be duplicated. More aboout this problem, and a possible solution if you want to solve this server-side, is on my blog: http://sqlblog.com/blogs/hugo_kornel...ated-rows.aspx However, the best solution is to handle this client side. I must admit that I know nothing about Crystal Reports. But IF CR can handle it, I'd advise you to open two seperate rowsets at once (one for event and food information, using a basic joined query and ordering by event, and one for the equipment information, also odered by event). Then process row from both recordsets in a balanced line fashion: read one row from each set and generate an output line until one set changes event; at that point deplete the other set until it too changes event. Repeat until both sets are exhausted. -- Hugo Kornelis, SQL Server MVP My SQL Server blog: http://sqlblog.com/blogs/hugo_kornelis |
| |||
| yin_n_yang74@yahoo.com wrote: > I am new to SQL and SQL Server world. There must be a simple solution > to this, but I'm not seeing it. I am trying to create a crystal > report (v8.5) using a stored procedure from SQL Server (v2000) in > order to report from two databases and to enable parameters. > > When I create the stored procedure, it joins multiple one-to-many > relationship tables. This results in repeated/duplicate records. Is > this an issue that should be solved within the stored procedure, or is > this inevitable? If latter, how do you eliminate the duplicates in > Crystal Reports? Never mind the stored procedure, have Crystal read the tables directly: Event from the main report, Food from a subreport, Equipment from a second subreport. Pass the primary key of Event to each subreport as a parameter, linking it to the appropriate foreign key within the subreport. |
| ||||
| Thank you all for your helpful hands. However, I realized that I was not putting enough information, which makes it difficult for you to help me. I will make a new post with more complete information. You have helped me get closer to what I need, though - thanks! |
| Thread Tools | |
| Display Modes | |
|
|