Avatar billede jonat Nybegynder
16. oktober 2008 - 10:00 Der er 6 kommentarer

Lidt komplekst SQL spm

Hej.

Jeg har 2 tabeller.

tabel1 ligger der nogle news, med et tilhørende ID.

I tabel2 ligger der rækker med et brugerid, og ID'et som referance til om news'en er blevet læst.

Det vil jeg gerne udlæse som et "felt".

Jeg har fundet ud af at man kan bruge exist, men kan ikke lige finde nogen syntaks.

Mit umiddelbare forslag var ellers:
Select title, content, exists(select PID from web_news_read where userid='userid') as readed from web_news

Således at den altså fx. resulterer 1 i feltet 'readed' hvis rækken eksisterer i web_news, og 0 hvis ikke.

Men jeg kan ikke lige få det til at virke.

Er der nogen nogen der kan hjælpe mig?

På forhånd Tak.
// Jonatan
Avatar billede aaberg Nybegynder
16. oktober 2008 - 10:07 #1
Er det ikke bare en helt almindelig inner join du skal bruge?
Avatar billede jonat Nybegynder
16. oktober 2008 - 10:13 #2
Jeg har også prøvet med inner join, men kunne ikke få det til at virke. For jeg ville også gerne have de rækker hvor den ikke eksisterede i.

Men fik løst det med flg. sætning:
select id, dato, title, filename, (SELECT PID FROM WEB_ObjectRead where userid=1234 and PID = web_files.id) AS readed from web_files where and date2>'01-nov-2007' ORDER BY ID DESC


// Jonatan
Avatar billede arne_v Ekspert
16. oktober 2008 - 13:49 #3
Hvis der evt. ikke findes nogen i WEB_ObjectRead saa skal det vel vaere en LEFT JOIN
fremfor en INNER JOIN.
Avatar billede jonat Nybegynder
19. oktober 2008 - 15:10 #4
Hej Arne.

Kan du give mig et eksempel på dette?
Avatar billede arne_v Ekspert
19. oktober 2008 - 17:01 #5
SELECT *
FROM web_files LEFT JOIN web_objectread ON web_files.id=web_objectread.pid
WHERE web_files.date2 > '01-nov-2007' ORDER BY id DESC

felterne fra web_objectread vil være NULL hvis der ikke er en matchende række.
Avatar billede arne_v Ekspert
25. oktober 2008 - 23:01 #6
jonat ?
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

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