Avatar billede gbjensen65 Nybegynder
30. juni 2009 - 17:05 Der er 2 kommentarer og
1 løsning

Problem med LEFT JOIN

Hej,

Jeg forsøger at skrive en select hvor jeg kun får et bestemt udtræk af mine tabeller.

Tabeller:

user (id, name,...)
beer (id,brewid,name...)
brew (id,name,...)
review (id,beerid,userid,...)

Den select jeg skal bruge kender user.id og skal kun vise de øl som user ikke har anmeldt, dvs. hvor review.userid='$userid' and review.beerid=beer.id IKKE er true

Jeg kunne tænke mig noget som dette her, men jeg ved ikke hvad jeg skal skrive i COUNT(???) eller om jeg skal gøre det på en anden måde.

SELECT beer.id, beer.name, brew.id, brew.name, COUNT(???) AS REVIEWS FROM beer, brew WHERE beer.brewid=brew.id left join ON beer.id=review.beerid HAVING REVIEWS=0

Altså den skal finde alle de øl som der ingen anmeldelser er af eller som kun andre users har anmeldt.

Jeg sender gerne en flaske godt øl, hvis der er en der kan hjælpe!

Lars Jensen, webmaster på goodbeer.dk
Avatar billede gnoname Praktikant
02. juli 2009 - 08:25 #1
Måske du skulle prøve med EXISTS:

SELECT b.id    AS BEERID ,
      b.name  AS BEERNAME,
      br.id    AS BREWID,
      br.name  AS BREWNAME,
      COUNT(*) AS REVIEWS
FROM  beer  b,
      brew  br
WHERE  b.brewid = br.id
AND    NOT EXISTS (
  SELECT 1
  FROM  review rew
  WHERE  rew.beerid = b.id
  AND    rew.userid = '$userid')
GROUP BY BEERID, BEERNAME, BREWID, BREWNAME
Avatar billede gbjensen65 Nybegynder
02. juli 2009 - 16:31 #2
Tusind tak siger jeg, det virker og det må jeg indrømme det ville have taget mig lang tid at komme frem til.

gnoname er kontaktet ang. modtagelse af en god øl som Tak!

Med højt Skum

Lars Jensen
Avatar billede gnoname Praktikant
02. juli 2009 - 18:38 #3
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester