Hej, Hej Fredrik! Du kan skriva så här: Underfråger är något man bör undvika. Det är ofta långsamare än joins eftersom det är fråger som exetueras för varje rad. Om man använder sig av under fråger bör fält som ingår i vikoret var indexerade. Hej Andreas, Du kunde ju sagt vilken databas du använde. Jag antog att det rörde sig om Access. Hej igen, Eftersom det handlar om asp kan du hämta informationen radvis och skriva ut kolumnvis per datum och kund. Får man inte två rader per datum och kund då, eftersom man hämtar ut informationen radvis? En rad per artikelgrupp.Slå ihop två SQL-satser till en....
Jag undrar om det är möjligt att slå ihop följande två SQL satser till en.
<code>SELECT Leveransdatum, Kundnr, COUNT(Orderrader.Artnr) AS Antal_artiklar_artikelgrupp100 FROM Orderhuvud, Orderrader WHERE Orderhuvud.ordernr = Orderrader.ordernr AND Orderrader.Artikelgrupp = 100 GROUP BY Orderrader.Leveransdatum, Orderhuvud.Kundnr</code>
<code>SELECT Orderrader.Leveransdatum, Orderhuvud.Kundnr, COUNT(Orderrader.Artnr) AS Antal_artiklar_artikelgrupp200 FROM Orderhuvud, Orderrader WHERE Orderhuvud.ordernr = Orderrader.ordernr AND Orderrader.Artikelgrupp = 200 GROUP BY Orderrader.Leveransdatum, Orderhuvud.Kundnr</code>
Orderhuvudet innhåller 1 post per ordernummer.
Orderrader innehåller varierande antal poster beroende hur många rader det är på ordern.
Det jag vill göra är att räkna hur många orderrader varje kund har per leveransdatum i respektive artikelgrupp.
Artikelgrupperna heter 100 och 200.
Mvh
//FredrikSv: Slå ihop två SQL-satser till en....
I den situation du beskriver verkar det som det bästa alternativet att använda sig av subqueries. Ett exempel på subquery ser du här:
<code>
SELECT Ord.OrderID, Ord.OrderDate,
(SELECT MAX(OrdDet.UnitPrice)
FROM Northwind.dbo.[Order Details] AS OrdDet
WHERE Ord.OrderID = OrdDet.OrderID) AS MaxUnitPrice
FROM Northwind.dbo.Orders AS Ord
</code>Sv: Slå ihop två SQL-satser till en....
SELECT Orderrader.Leveransdatum, Orderhuvud.Kundnr, -SUM(Orderrader.Artikelgrupp = 100) AS Antal_artiklar_artikelgrupp100, -SUM(Orderrader.Artikelgrupp = 200) AS Antal_artiklar_artikelgrupp200
FROM Orderrader LEFT JOIN Orderhuvud ON Orderrader.ordernr = Orderhuvud.ordernr
WHERE Orderrader.Artikelgrupp IN (100, 200)
GROUP BY Orderrader.Leveransdatum, Orderhuvud.KundnrSv: Slå ihop två SQL-satser till en....
Sv: Slå ihop två SQL-satser till en....
Håller med dig om att underfrågor bör undvikas så långt det går.
Följande fungerar inte hos mig men det har säkert att göra med att jag ställer frågorna mot en AS/400 (den gillar inte =, vill bara ha "),.")
-SUM(Orderrader.Artikelgrupp = 100) AS Antal_artiklar_artikelgrupp100
Däremot använder jag mig nu av JOIN-satsen.
Tack för hjälpen i allafall!
//FredrikSv: Slå ihop två SQL-satser till en....
Varför kan du int plocka ut informationen radvis?
SELECT Orderrader.Leveransdatum, Orderhuvud.Kundnr, Orderrader.Artikelgrupp, COUNT(Orderrader.Artnr) AS Antal_artiklar_artikelgrupp
FROM Orderrader LEFT JOIN Orderhuvud ON Orderrader.ordernr = Orderhuvud.ordernr
GROUP BY Orderrader.Leveransdatum, Orderhuvud.Kundnr, Orderrader.ArtikelgruppSv: Slå ihop två SQL-satser till en....
Anledningen till att jag vill ha antalet per artikelgrupp i två kolumner istället för på två rader är att jag har två lagerområden som plockar varsin artikelgrupp. Då är det praktiskt om varje kolumn står för en artikelgrupp. Listan blir då kortare och man ser direkt hur mycket orderrader det ligger per lagerområde.
Löste detta genom att man får välja vilken artikelgrupp man vill se på.
Håller även på en hel del med Accessdatabaser och där har jag nytta av hela din förra lösning.
Ska fortsättningsvis bättra mig då det gäller att ange vilken databas jag behöver hjälp med.
//FredrikSv: Slå ihop två SQL-satser till en....
Sv: Slå ihop två SQL-satser till en....
Jag skulle vilja ha de båda värdena på samma rad om jag ska lista detta i samma tabell.