Har problem med min sql fråga, vill att den bara ska visa en av varje nyID, men nu visas samma nyID flera gånger.
har denna fråga:
SELECT DISTINCT nyheter.nyID, anvandare.userID AS anvandare_userID, anvandare.userNamn, nyheter.userID AS nyheter_userID, nyheter.nyDatum, nyheter.nyRubrik, nyheter_kommentarer.nyID, nyheter_kommentarer.komID
FROM (anvandare INNER JOIN nyheter ON anvandare.userID=nyheter.userID) LEFT JOIN nyheter_kommentarer ON (nyheter.nyID=nyheter_kommentarer.nyID) AND (nyheter.nyID=nyheter_kommentarer.nyID)
ORDER BY nyheter.nyDatum DESC;
jag vill hämta ut alla nyheter en gång, samt kolla om det finns någon kommentar till den nyheten. Nu kommer samma nyheter ut flera gånger, en gång för varje kommentar som nyheten har :OO
Vad vill du visa? Antalet kommentarer per nyhet? Datum för senaste kommentaren? En slumpvis vald kommenentar? Ett ja om det finns minst en kommentar och nej om det inte finns någon? En länk som leder till alla kommentarer för den nyheten?
Det är det jag vill att du beskriver direkt när du har ett problem med dina databasfrågor.
Att bara säga att du vill kolla om det finns en nyhet är för vagt. Jag gav några exempel på hur man kan tolka det kravet. Om du inte kan säga vilket resultat du vill ha så kommer vi ingen vart.
det är inte nyheten jag ska kolla om den finns, utan jag ska kolla om det finns någon kommentar till nyheten. Som sql-frågan är nu får jag upp alla nyheter som jag vill även de som inte har någon kommentar. Men har nyheten flera kommentarer så visas nyheten flera gånger, jag vill bara ha fram nyheten EN gång. Resultatet ska bli att ett nummer på någon av kommentarerna som finns till nyheten visas i kolumnen komID
"Ett ja om det finns minst en kommentar och nej om det inte finns någon?" ;)
select nyheter.nyID,
anvandare.userID AS anvandare_userID,
anvandare.userNamn,
nyheter.userID AS nyheter_userID,
nyheter.nyDatum,
nyheter.nyRubrik,
case when exists
(select *
from nyheter_kommentarer
where nyheter.nyID=nyheter_kommentarer.nyID) then 'Ja' else 'Nej' end
as kommentar
FROM anvandare
INNER
JOIN nyheter ON anvandare.userID=nyheter.userID
ORDER BY nyheter.nyDatum DESC
Vilken DBMS? Om det är Access får du använda iif istället för case.
tack, men den vill inte redigt fungera. Det är Access jag anv.
har följande:
select nyheter.nyID,
anvandare.userID AS anvandare_userID,
anvandare.userNamn,
nyheter.userID AS nyheter_userID,
nyheter.nyDatum,
nyheter.nyRubrik,
iif when exists
(select *
from nyheter_kommentarer
where nyheter.nyID=nyheter_kommentarer.nyID) then 'Ja' else 'Nej' end
as kommentar
FROM anvandare
INNER
JOIN nyheter ON anvandare.userID=nyheter.userID
ORDER BY nyheter.nyDatum DESC
men får felmeddelandet:
Syntaxfel i frågeuttrycket 'iif when exists
(select *
from nyheter_kommentarer
where nyheter.nyID=nyheter_kommentarer.nyID) then 'Ja' else 'Nej' end'
select nyheter.nyID,
anvandare.userID AS anvandare_userID,
anvandare.userNamn,
nyheter.userID AS nyheter_userID,
nyheter.nyDatum,
nyheter.nyRubrik,
iif(exists
(select *
from nyheter_kommentarer
where nyheter.nyID=nyheter_kommentarer.nyID),'Ja','Nej')
as kommentar
FROM anvandare
INNER
JOIN nyheter ON anvandare.userID=nyheter.userID
ORDER BY nyheter.nyDatum DESC