Closed Thread
Results 1 to 6 of 6

Thread: Please help before I break something...

  1. #1
    Parabola's Avatar
    Parabola is offline Programming Professional
    Join Date
    Jul 2009
    Location
    Texas
    Posts
    336
    Blog Entries
    4
    Rep Power
    13

    Angry Please help before I break something...

    Ok... I am starting to hate Microsoft SQL....

    There's that stupid rule about any columns selected MUST be contained in either an aggregate function or the group by clause. WTF.
    I need help, because I don't know a harmless aggregate function for a string (varchar) and if I put these columns in the group by, of course it's going to f*** the table up...
    Anyways, here's the query, someone PLEASE help me. WingedPanther, you got any ideas?

    Code:
    SELECT     t5.PartNumber, t2.shipquantity, t3.Description, t3.Unit, t4.Vendor, t4.VendorPartNumber, t4.ReplacementCost, t4.LastCost, t5.PageNumber
    FROM         (SELECT     TOP (100) PERCENT PartNumber, SUM(ShipQuantity) AS shipquantity
                           FROM          invoices_salesline
                           GROUP BY PartNumber
                           ORDER BY ShipQuantity DESC) AS t2 INNER JOIN
                          inventory_pricing AS t3 ON t2.PartNumber = t3.PartNumber INNER JOIN
                              (SELECT     PartNumber, VendorCode, Vendor, VendorPartNumber, ReplacementCost, LastCost
                                FROM          inventory_vendor
                                WHERE      (VendorCode = 'A')) AS t4 ON t2.PartNumber = t4.PartNumber INNER JOIN
                          inventory_catalogpage AS t5 ON t2.PartNumber = t5.PartNumber
    GROUP BY t2.PartNumber
    ORDER BY t2.shipquantity DESC
    And why the hell does it keep inserting that stupid TOP(100)PERCENT ??!?
    Programmer (n): An organism that can turn caffeine into code.
    Programming would be so much easier without all the users.

  2. CODECALL Circuit advertisement
    Join Date
    Always
    Location
    Advertising world
    Posts
    Many

     
  3. #2
    Join Date
    Jul 2006
    Posts
    16,494
    Blog Entries
    75
    Rep Power
    143

    Re: Please help before I break something...

    I haven't tested this, but here's my take on it:
    Code:
    SELECT     
      inventory_catalogpage.PartNumber, 
      sum(invoices_salesline.shipquantity), 
      inventory_pricing.Description, 
      inventory_pricing.Unit, 
      inventory_vendor.Vendor, 
      inventory_vendor.VendorPartNumber, 
      inventory_vendor.ReplacementCost, 
      inventory_vendor.LastCost, 
      inventory_catalogpage.PageNumber
    FROM          invoices_salesline
    INNER JOIN inventory_pricing ON invoices_salesline.PartNumber = inventory_pricing.PartNumber 
    INNER JOIN inventory_vendor ON invoices_salesline.PartNumber = inventory_vendor.PartNumber 
    INNER JOIN inventory_catalogpage ON invoices_salesline.PartNumber = inventory_catalogpage.PartNumber
    WHERE      (inventory_vendor.VendorCode = 'A')
    GROUP BY 
      inventory_catalogpage.PartNumber, 
      inventory_pricing.Description, 
      inventory_pricing.Unit, 
      inventory_vendor.Vendor, 
      inventory_vendor.VendorPartNumber, 
      inventory_vendor.ReplacementCost, 
      inventory_vendor.LastCost, 
      inventory_catalogpage.PageNumber
    ORDER BY invoices_salesline.shipquantity DESC
    In case you can't tell, I don't like subselects. If you really need them, I'd create a view instead.
    Programming is a branch of mathematics.
    My CodeCall Blog | My Personal Blog

  4. #3
    Parabola's Avatar
    Parabola is offline Programming Professional
    Join Date
    Jul 2009
    Location
    Texas
    Posts
    336
    Blog Entries
    4
    Rep Power
    13

    Re: Please help before I break something...

    returned 1,135,187 rows... lol Also took well over a minute. But still, that's the problem... if I put everything in the group by, then it returns a row for each variation of each part number..... Loading a couple example resultsets for you right now.

    This Table shows using everything in the GROUP BY clause in SQL:


    This is an example from SQL, very stripped down though since I can't add the extra fields because of this stupid group by thing, but still gives an idea of what I need it to be:

    In the second table, it was Ok to use everything in the group by (except shipquantity which WAS contained in an aggregate function) because they don't vary at all for each part.
    Programmer (n): An organism that can turn caffeine into code.
    Programming would be so much easier without all the users.

  5. #4
    Parabola's Avatar
    Parabola is offline Programming Professional
    Join Date
    Jul 2009
    Location
    Texas
    Posts
    336
    Blog Entries
    4
    Rep Power
    13

    Re: Please help before I break something...

    Ok, got some good progress. WithOUT the page number, all fields should be the same (except for strange exceptions), so this query works:
    Code:
    SELECT     TOP (250) l.PartNumber, SUM(l.ShipQuantity) AS shipquantity, l.Description, l.Unit, v.Vendor, v.VendorPartNumber, ROUND(v.ReplacementCost, 2) 
                          AS ReplacementCost, ROUND(v.LastCost, 2) AS LastCost
    FROM         invoices_salesline AS l INNER JOIN
                              (SELECT     Vendor, VendorPartNumber, PartNumber, ReplacementCost, LastCost
                                FROM          inventory_vendor
                                WHERE      (VendorCode = 'A')
                                GROUP BY PartNumber, Vendor, VendorPartNumber, ReplacementCost, LastCost) AS v ON l.PartNumber = v.PartNumber
    GROUP BY l.PartNumber, l.Description, l.Unit, v.Vendor, v.VendorPartNumber, v.ReplacementCost, v.LastCost
    ORDER BY shipquantity DESC
    And, I talked to my manager about it, we are only going to use the page number from the NEWEST publication that has said part. That should eliminate that issue...

    EDIT: ROFL.... didn't work... even in a single publication of a catalog, a part number is on multiple pages (versions of a part)
    Programmer (n): An organism that can turn caffeine into code.
    Programming would be so much easier without all the users.

  6. #5
    Parabola's Avatar
    Parabola is offline Programming Professional
    Join Date
    Jul 2009
    Location
    Texas
    Posts
    336
    Blog Entries
    4
    Rep Power
    13

    Re: Please help before I break something...

    Done....
    Code:
    SELECT     TOP (250) l.PartNumber, SUM(l.ShipQuantity) AS shipquantity, l.Description, l.Unit, v.Vendor, v.VendorPartNumber, ROUND(v.ReplacementCost, 2) 
                          AS ReplacementCost, ROUND(v.LastCost, 2) AS LastCost, C.PageNumber
    FROM         invoices_salesline AS l INNER JOIN
                              (SELECT     Vendor, VendorPartNumber, PartNumber, ReplacementCost, LastCost
                                FROM          inventory_vendor
                                WHERE      (VendorCode = 'A')
                                GROUP BY PartNumber, Vendor, VendorPartNumber, ReplacementCost, LastCost) AS v ON l.PartNumber = v.PartNumber INNER JOIN
                              (SELECT     PartNumber, MAX(PageNumber) AS PageNumber
                                FROM          inventory_catalogpage
                                WHERE      (CatalogName = 'C08')
                                GROUP BY PartNumber) AS C ON l.PartNumber = C.PartNumber
    GROUP BY l.PartNumber, l.Description, l.Unit, v.Vendor, v.VendorPartNumber, v.ReplacementCost, v.LastCost, C.PageNumber
    ORDER BY shipquantity DESC
    Programmer (n): An organism that can turn caffeine into code.
    Programming would be so much easier without all the users.

  7. #6
    Parabola's Avatar
    Parabola is offline Programming Professional
    Join Date
    Jul 2009
    Location
    Texas
    Posts
    336
    Blog Entries
    4
    Rep Power
    13

    Re: Please help before I break something...

    Final Edit of Query:
    Code:
    SELECT     TOP (250) l.PartNumber, SUM(l.ShipQuantity) AS shipquantity, l.Description, l.Unit, v.Vendor, v.VendorPartNumber, ROUND(v.ReplacementCost, 2) 
                          AS ReplacementCost, ROUND(v.LastCost, 2) AS LastCost, C.PageNumber
    FROM         invoices_salesline AS l INNER JOIN
                              (SELECT     Vendor, VendorPartNumber, PartNumber, ReplacementCost, LastCost
                                FROM          inventory_vendor
                                WHERE      (VendorCode = 'A')
                                GROUP BY PartNumber, Vendor, VendorPartNumber, ReplacementCost, LastCost) AS v ON l.PartNumber = v.PartNumber INNER JOIN
                              (SELECT     TOP (100) PERCENT PartNumber, MAX(CatalogName) AS MCatalogName, MIN(PageNumber) AS PageNumber
                                FROM          inventory_catalogpage
                                WHERE      (CatalogName < 'C90')
                                GROUP BY PartNumber
                                ORDER BY PartNumber) AS C ON l.PartNumber = C.PartNumber
    GROUP BY l.PartNumber, l.Description, l.Unit, v.Vendor, v.VendorPartNumber, v.ReplacementCost, v.LastCost, C.PageNumber
    ORDER BY shipquantity DESC
    Programmer (n): An organism that can turn caffeine into code.
    Programming would be so much easier without all the users.

Closed Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Remember to take a break sometimes
    By wim DC in forum The Lounge
    Replies: 1
    Last Post: 06-05-2011, 08:14 AM
  2. How do i put a line break on this code?
    By lil-fino in forum PHP Development
    Replies: 8
    Last Post: 05-12-2010, 09:18 PM
  3. break and continue loop
    By jwxie518 in forum C and C++
    Replies: 6
    Last Post: 05-23-2009, 12:46 PM
  4. Memory Usage break-down
    By Jordan in forum Linux Tutorials, Guides and Tips
    Replies: 6
    Last Post: 11-27-2008, 07:07 AM
  5. Another Game - Break The Code
    By TcM in forum The Lounge
    Replies: 21
    Last Post: 06-06-2008, 11:38 AM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts