Hej! Ja, det kan jag hålla med om. Jag sitter o rensar upp i gammal kod och hittade en massa <code:asp> Något i stil med följande borde fungera. Säkerställ dock att dina variabler "intPersonalID", "intButikID" och "Date" är säkra, alltså att du kontrollerar att de är den datatyp de borde vara och innehåller den data de borde innehålla. Hej Jonas! Om du ser på mitt exempel måste du använda dig av en GROUP BY i SQL satsen för att gruppera ihop raderna. Jepp, jag har testat det förslaget oxå. Så nu ser SQL:en ut så här: Visst, med en LEFT JOIN. Testade din variant samt en right join men jag får inte fram alla posterna i tblProdukter Vad kör du för databas? Såg att select skedde på tblResultat istället för på tblProdukter, men en RIGHT JOIN tidigare borde vara samma som nedanstående LEFT JOIN. Jag kör en access-databas. Resultatet blev detsamma då det inte finns några värde med null i kolumnen tblResultat.ProduktID SQL satsen jag skickade senast kontrollerar inte NULL värden från tabellen, utan från det sammanfogade resultatet. Det är nämligen så att om inte ProductID från produkttabellen kan kopplas ihop med någon rad från resultat tabellen kommer resultattabellens alla fält att vara NULL på den raden i det sammanfogade resultatet. Jepp, jag får lämna idén med sammanslagna SQL:er. Har du tips på hur man kan lösa det? Kanske nån array eller nått.Slå ihop 2 SQL:er
Jag undrar om det finns ett smidigt sätt att så ihop dessa SQL:er.
<code>strSQL = "SELECT * FROM tblProdukter"
strSQL = "SELECT SUM(AntalPr) AS TotAntalPr, SUM(ForsaljningsPrisPr) AS TotForsaljningsPris, SUM(FullPrisPr) AS TotFullPris FROM tblResultat WHERE tblResultat.ProduktID=" & RS("ProduktID") & " AND tblResultat.PersonalID=" & intPersonalID & " AND tblResultat.ButikID=" & intButikID & " AND tblResultat.Datum=#" & FormatDateTime(Date) & "#"</code>
Tackar på förhandSv:Slå ihop 2 SQL:er
konstigheter. Koden i detta fallet fungerar, men det jag tycker ser konstigt ut är att det öppnas
ett nytt recordset inne i en loop. Så därför skulle jag vilja slå ihop SQL:erna för att få det att se lite
bättre ut.
<code>
<%
Set RS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM tblProdukter"
Set RS = Conn.Execute(strSQL)
Do until RS.EOF
strSQL1 = "SELECT SUM(AntalPr) AS TotAntalPr, SUM(ForsaljningsPrisPr) AS TotForsaljningsPris," &_
"SUM(FullPrisPr) AS TotFullPris FROM tblResultat WHERE tblResultat.ProduktID=" & RS("ProduktID") & "" &_
"AND tblResultat.PersonalID=" & intPersonalID & " AND tblResultat.ButikID=" & intButikID & " AND" &_
"tblResultat.Datum=#" & FormatDateTime(Date) & "#"
Set RS1 = Conn.Execute(strSQL1)
Do until RS1.EOF
%>
<tr>
<td class="rubrik10Border">
<input name="ProduktID" type="hidden" value="<%=RS("ProduktID")%>"><%=RS("ProduktNamn")%>
</td>
<td align="center" class="text10Border">
<input name="AntalPr" type="text" class="clsInput" value="0" size="8" <%=DisableForm%>></td>
<td align="center" class="text10Border">
<input name="FullPrisPr" type="text" class="clsInput" value="0" size="8" <%=DisableForm%>></td>
<td align="center" class="text10Border">
<input name="ForsaljningsPrisPr" type="text" class="clsInput" value="0" size="8" <%=DisableForm%>></td>
<td align="center" class="text10Border"><%=RS1("TotAntalPr")%></td>
<td align="center" class="text10Border"><%=RS1("TotFullPris")%></td>
<td align="center" class="text10Border"><%=RS1("TotForsaljningsPris")%></td>
</tr>
<%
RS1.MoveNext
Loop
RS1.Close
Set RS1 = Nothing
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
%>
</code>Sv: Slå ihop 2 SQL:er
<%
strSQL1 = "SELECT p.ProduktID, p.ProduktNamn, SUM(r.AntalPr) AS TotAntalPr, SUM(r.ForsaljningsPrisPr) AS TotForsaljningsPris," &_
" SUM(r.FullPrisPr) AS TotFullPris FROM tblResultat r INNER JOIN tblProdukter p ON r.ProduktID=p.ProduktID " &_
" WHERE r.PersonalID=" & intPersonalID & " AND r.ButikID=" & intButikID & " " &_
" AND r.Datum=#" & FormatDateTime(Date) & "#"
Set RS = Conn.Execute(strSQL1)
Do until RS.EOF
%>
</code>
jag gjorde bara en INNER JOIN
Och så får du ersätta alla RS1 med RSSv: Slå ihop 2 SQL:er
<%
strSQL = "SELECT tblProdukter.ProduktID, tblProdukter.ProduktNamn, SUM(tblResultat.AntalPr) AS TotAntalPr, SUM(tblResultat.ForsaljningsPrisPr) AS TotForsaljningsPris, SUM(tblResultat.FullPrisPr) AS TotFullPris FROM tblProdukter, tblResultat " &_
"WHERE tblResultat.ProduktID = tblProdukter.ProduktID AND tblResultat.PersonalID = " & intPersonalID & " AND tblResultat.ButikID = " & intButikID & " AND tblResultat.Datum = #" & FormatDateTime(Date) & "# " &_
"GROUP BY tblResultat.ProduktID"
Set RS = Conn.Execute(strSQL)
Do until RS.EOF
%>
<tr>
<td class="rubrik10Border">
<input name="ProduktID" type="hidden" value="<%=RS("ProduktID")%>"><%=RS("ProduktNamn")%>
</td>
<td align="center" class="text10Border">
<input name="AntalPr" type="text" class="clsInput" value="0" size="8" <%=DisableForm%>></td>
<td align="center" class="text10Border">
<input name="FullPrisPr" type="text" class="clsInput" value="0" size="8" <%=DisableForm%>></td>
<td align="center" class="text10Border">
<input name="ForsaljningsPrisPr" type="text" class="clsInput" value="0" size="8" <%=DisableForm%>></td>
<td align="center" class="text10Border"><%=RS("TotAntalPr")%></td>
<td align="center" class="text10Border"><%=RS("TotFullPris")%></td>
<td align="center" class="text10Border"><%=RS("TotForsaljningsPris")%></td>
</tr>
<%
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
%>
Sv:Slå ihop 2 SQL:er
Det blev så här enligt ditt förslag Jonas o då fick jag felmeddelandet:
Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'ProduktID'.
Går det att fixa?
<code>
strSQL = "SELECT tblProdukter.ProduktID, tblProdukter.ProduktNamn, " &_
"SUM(tblResultat.AntalPr) AS TotAntalPr, " &_
"SUM(tblResultat.ForsaljningsPrisPr) AS TotForsaljningsPris, " &_
"SUM(tblResultat.FullPrisPr) AS TotFullPris " &_
"FROM tblResultat INNER JOIN tblProdukter ON tblResultat.ProduktID=tblProdukter.ProduktID " &_
"WHERE tblResultat.PersonalID=" & intPersonalID & " AND tblResultat.ButikID=" & intButikID & " " &_
"AND tblResultat.Datum=#" & FormatDateTime(Date) & "#"
</code>
MVH UffeSv: Slå ihop 2 SQL:er
Sv:Slå ihop 2 SQL:er
<code>
strSQL = "SELECT tblProdukter.ProduktID, tblProdukter.ProduktNamn, " &_
"SUM(tblResultat.AntalPr) AS TotAntalPr, " &_
"SUM(tblResultat.ForsaljningsPrisPr) AS TotForsaljningsPris, " &_
"SUM(tblResultat.FullPrisPr) AS TotFullPris " &_
"FROM tblResultat INNER JOIN tblProdukter ON tblResultat.ProduktID=tblProdukter.ProduktID " &_
"WHERE tblResultat.PersonalID=" & intPersonalID & " AND tblResultat.ButikID=" & intButikID & " " &_
"AND tblResultat.Datum=#" & FormatDateTime(Date) & "#" &_
"GROUP BY tblProdukter.ProduktID, tblProdukter.ProduktNamn"
</code>
Problemet nu är att då listas bara produkterna om det finns en relaterad post i tblResultat. Alla posterna i tblProdukter ska visas oavsett om det finns något i tabellen tblResultat eller inte.
Går det att fixa?Sv: Slå ihop 2 SQL:er
<code>
strSQL = "SELECT tblProdukter.ProduktID, tblProdukter.ProduktNamn, " &_
"SUM(tblResultat.AntalPr) AS TotAntalPr, " &_
"SUM(tblResultat.ForsaljningsPrisPr) AS TotForsaljningsPris, " &_
"SUM(tblResultat.FullPrisPr) AS TotFullPris " &_
"FROM tblResultat LEFT JOIN tblProdukter ON tblResultat.ProduktID=tblProdukter.ProduktID " &_
"WHERE tblResultat.PersonalID=" & intPersonalID & " AND tblResultat.ButikID=" & intButikID & " " &_
"AND tblResultat.Datum=#" & FormatDateTime(Date) & "#" &_
"GROUP BY tblProdukter.ProduktID"
</code>Sv:Slå ihop 2 SQL:er
Sv: Slå ihop 2 SQL:er
Problemet sitter i WHERE delen, då alla tblResultat kolumner kommer att vara NULL då en JOIN inte gjorts.
<code>
strSQL = "SELECT tblProdukter.ProduktID, tblProdukter.ProduktNamn, " &_
"SUM(tblResultat.AntalPr) AS TotAntalPr, " &_
"SUM(tblResultat.ForsaljningsPrisPr) AS TotForsaljningsPris, " &_
"SUM(tblResultat.FullPrisPr) AS TotFullPris " &_
"FROM tblProdukter LEFT JOIN tblResultat ON tblResultat.ProduktID=tblProdukter.ProduktID " &_
"WHERE tblResultat.ProduktID IS NULL OR (tblResultat.PersonalID=" & intPersonalID & " AND tblResultat.ButikID=" & intButikID & " " &_
"AND tblResultat.Datum=#" & FormatDateTime(Date) & "#)" &_
"GROUP BY tblProdukter.ProduktID"
</code>Sv:Slå ihop 2 SQL:er
Sv: Slå ihop 2 SQL:er
Sv:Slå ihop 2 SQL:er
Häls Uffe