webForumDet fria alternativet

problem med distinct

10 svar · 520 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005833 inlägg
#1

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
#2

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
#3

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
#4

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
#5

jag vill veta om det finns någon kommentar till nyheten

LarsGMedlem sedan dec. 200012 464 inlägg
#6

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
#7

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
#8
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
#9

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
#10
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
#11

tack, nu funkar det :bire

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)