VinnarenMedlem sedan sep. 2005833 inlägg 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;
Vad har jag gjort för fel??
Tacksam för all hjälp :stud
LarsGMedlem sedan dec. 200012 464 inlägg Om det finns (t.ex.) flera kommentarer för en nyhet så blir det så. Vad vill du ha för resultat?
VinnarenMedlem sedan sep. 2005833 inlägg 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
LarsGMedlem sedan dec. 200012 464 inlägg 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.
VinnarenMedlem sedan sep. 2005833 inlägg jag vill veta om det finns någon kommentar till nyheten
LarsGMedlem sedan dec. 200012 464 inlägg 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.
VinnarenMedlem sedan sep. 2005833 inlägg 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?" ;)
LarsGMedlem sedan dec. 200012 464 inlägg 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.
VinnarenMedlem sedan sep. 2005833 inlägg 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'
emissionMedlem sedan dec. 19996 721 inlägg 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
VinnarenMedlem sedan sep. 2005833 inlägg tack, nu funkar det :bire