SELECT p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p
ON ptc.PrId = p.PrId
INNER JOIN price AS pr
ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId
ORDER BY pr.StartDate DESC
Som koden är nu hämtas samma produkt flera gånger, jag vill bara visa den en gång. Har provat med Distinct på p.PrId men blev ingen skillnad.
jag vill ha ut flera poster, men jag vill inte ha ut samma produkt så många gånger det finns ett pris för den. Tex finns det det 5 pris för en produkt så kommer den ut 5 gånger.
Om jag förstår dig rätt vill du ha ut de 5 priserna men produkt bara en gång?
Det går inte. Inte via SQL-satsen i varje fall. Det får du i så fall fixa via applikationen. Eller genom två separata SQL-frågor. En som tar ut produktens namn och en som tar fram resten.
SELECT p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p ON ptc.PrId = p.PrId
INNER JOIN price AS pr ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId
GROUP BY p.PrId
HAVING pr.StartDate =
(SELECT MAX(pr.StartDate) FROM price C WHERE C.PrId = p.PrId)
ORDER BY pr.StartDate DESC
SELECT distinct p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p
ON ptc.PrId = p.PrId
INNER JOIN price AS pr
ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId
and pr.StartDate =
( select max(startdate) from price
where prid = p.prid )
ORDER BY pr.StartDate DESC
SELECT p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p ON ptc.PrId = p.PrId
INNER JOIN price AS pr ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId
GROUP BY p.PrId
HAVING pr.StartDate =
(SELECT MAX(pr.StartDate) FROM price C WHERE C.PrId = p.PrId)
ORDER BY pr.StartDate DESC
Tack, men får felmeddelandet
"Column 'price.StartDate' is invalid in the HAVING clause because it is not contained in either an aggregate function or the GROUP BY clause."
SELECT distinct p.PrId, p.Name, p.ShortDescription, pr.Price
FROM producttocamp AS ptc
INNER JOIN product AS p
ON ptc.PrId = p.PrId
INNER JOIN price AS pr
ON pr.PrId = p.PrId
WHERE ptc.CampId = @CampId
and pr.StartDate =
( select max(startdate) from price
where prid = p.prid )
ORDER BY pr.StartDate DESC
Tusentack för all hjälp, nu funkar den (y) :i
Fungerar dock inte om det är samma datum, men skit samma, får ha någon kolla så det inte kan vara det i databasen