Avatar billede tele_lucien Nybegynder
06. januar 2003 - 23:04 Der er 21 kommentarer og
2 løsninger

Kan man lave 2 JOINs i samme SQL streng?

Hej med jer......

Kan man lave 2 JOINs i samme SQL streng?

Hvordan skal den smides ind her?

Tabellen som skal JOIN'ens hedder Svar, og feltet hedder Svar.ReplyDate og den skal være køre sammen med Posts.Date og den skal sortere dem DESC på din oprettelses dato  ......... således at det er Svar.Reply datoen der bliver vidst som det nyeste indlæg i mit forum.

Dim strSQL As String = "SELECT Forum.ForumID, "
strSQL += "Posts.ForumID, Posts.Subject, Posts.UserName, Posts.Date, Posts.PostID "
strSQL += "FROM Forum INNER JOIN Posts ON Forum.ForumID = Posts.ForumID "
strSQL += "WHERE Forum.ForumID ='" & ForumID & "'" & " ORDER BY Posts.PostID DESC"

Mvh Lucien
Avatar billede tele_lucien Nybegynder
06. januar 2003 - 23:09 #1
BTW:

>> således at det er Svar.Reply datoen der bliver vidst som det nyeste indlæg i mit forum

Hvis der er nogen. Ellers så skal den bare vise Posts.Date, som er det første indlæg i forumet.
Avatar billede burningice Nybegynder
07. januar 2003 - 01:48 #2
uhm... har du ikke adgang til en sql querybuilder...?
Avatar billede fsconsult.dk Nybegynder
07. januar 2003 - 08:42 #3
Det lyder som om du har brug for en UNION.

Ønsker du ikke både en record med "Forum JOIN Posts" og dertil hørende "Forum JOIN Posts JOIN Svar" ?
Avatar billede tele_lucien Nybegynder
07. januar 2003 - 12:20 #4
Jo det ser rigtigt ud fsconsult.dk!

har jeg aldrig brugt før. :-(

Vil du smide et det i min kode?
Avatar billede janus_007 Nybegynder
07. januar 2003 - 15:16 #5
SELECT Forum.ForumID, Posts.ForumID, Posts.Subject, Posts.UserName, Svar.ReplyDate, Posts.PostID
FROM Forum
INNER JOIN Posts ON Forum.ForumID = Posts.ForumID
INNER JOIN Posts ON Svar.ReplyDate = Posts.Date
WHERE Forum.ForumID = '" & ForumID & "'
ORDER BY Svar.PostID DESC

Vær opmærksom på at Date er et reserveret ord... Det kan give nogle probs, jeg ville omdøbe det med det samme hvis jeg dig :O)

Som du kan se har jeg skiftet  Posts.Date ud med Svar.ReplyDate det betyder teoretisk intet, men det gør selecten lidt nemmere at læse og vedligeholde..

fsconsult.dk--> en union har intet at gøre i det tilfælde der. Det kan ikke engang lade sig gøre at lave en (der er brugbar)
Avatar billede tele_lucien Nybegynder
07. januar 2003 - 17:47 #6
:-( For følgende fejl:

Tables or functions 'Posts' and 'Posts' have the same exposed names. Use correlation names to distinguish them.

Dim strSQL As String = "SELECT Forum.ForumID, Posts.ForumID, Posts.Subject, Posts.UserName, Svar.ReplyDate, Posts.PostID "
        strSQL += "FROM Forum "
        strSQL += "INNER JOIN Posts ON Forum.ForumID = Posts.ForumID "
        strSQL += "INNER JOIN Posts ON Svar.ReplyDate = Posts.Date "
        strSQL += "WHERE Forum.ForumID = '" & ForumID & "' "
        strSQL += "ORDER BY Svar.PostID DESC"
Avatar billede tele_lucien Nybegynder
07. januar 2003 - 17:54 #7
eh jeg er ikke s¨hård til det her, jeg skal selvfølgelig huske at lave en relation til der reletere de to her:

INNER JOIN Posts ON Svar.ReplyDate = Posts.Date

Eller hvad? :-(
Avatar billede tele_lucien Nybegynder
07. januar 2003 - 18:04 #8
ups........... det er INNER JOIB Svar, for Svar.ReplyDate kommer jo fra tabellen Svar.

INNER JOIN Svar ON Svar.ReplyDate = Posts.Date
Avatar billede burningice Nybegynder
07. januar 2003 - 20:20 #9
tele_lucien>> hvilken db er det?? access??
Avatar billede burningice Nybegynder
07. januar 2003 - 20:22 #10
blah.. sorry... det er ms sql... well.. hvis du har adgang til access kan du bruge dens sql query builder, ellers kan jeg anbefale BaseNow, som kan hentes i en 30 dages trial.. den har en god querybuilder

http://www.basenow.com/html/screen_shots.asp#SQL%20Query%20Builder

ellers så søg på google

http://www.google.com/search?sourceid=navclient&ie=UTF-8&oe=UTF-8&q=sql+query+builder
Avatar billede janus_007 Nybegynder
07. januar 2003 - 21:29 #11
tele lucien:
ja naturligvis...
INNER JOIN Svar ON Svar.ReplyDate = Posts.Date

husk at denne join skal komme som nummer 2 join, da posts.date ellers ikke eksisterer.... Jeg ville nu nok lige ændre 'Date' til noget andet måske 'ReplyDate'

cyberfessor--> den querybuilder dur sq ikke optimalt, der er et hav af ting man slet ikke kan med den! (jeg kan absolut ikke anbefale den, bedst at lære sin sql ordentligt istedet for et stykke fancy-proggie som kun funker halvt)
Avatar billede burningice Nybegynder
07. januar 2003 - 22:35 #12
janus_007>> selvfølgelig får man den reneste kode ved at skrive det selv... dog kan vi ikke alle være gode til det hele, og du kan sige hvad du vil, men folk der koder i hånden spilder bruger, næsten altid, mere tid end dem der har et værktøj til hjælp. Det er vel ikke uden grund at firmaer tjener mange penge på IDE'er, som gør livet for os programmører 100 gange lette end hvis man skulle side med notepad og en commando-baseret compiler.
Det kan godt være at der er nogle ting man ikke kan med den, men så er det i hvert fald ting jeg ikke har haft brug for. Jeg kan basic sql, så længe vi holder os til en tabel, men har aldrig haft problemer med den når der skal joines eller bruge unions i forbindelse med flere tabeller... istedet har jeg sparet en masse tid da man med simpelt drag&drop kan få genereret selv rimelig avancerede queryer jeg aldrig, i min vildeste fantasi, ville have kunne skrive selv.
Avatar billede _darkstar_ Nybegynder
07. januar 2003 - 22:42 #13
SELECT Forum.ForumID, Posts.ForumID, Posts.Subject, Posts.UserName, Svar.ReplyDate, Posts.PostID
FROM Forum
INNER JOIN Posts ON Forum.ForumID = Posts.ForumID
INNER JOIN Posts ON Svar.ReplyDate = Posts.Date
WHERE Forum.ForumID = '" & ForumID & "'
ORDER BY Svar.PostID DESC

Duer ikke fordi (som fejlmeddelelsen også siger) at der er to felter med samme navn i resultatet.

SELECT Posts.ForumID, Posts.Subject, Posts.UserName, Svar.ReplyDate, Posts.PostID
FROM Forum
INNER JOIN Posts ON Forum.ForumID = Posts.ForumID
INNER JOIN Posts ON Svar.ReplyDate = Posts.Date
WHERE Forum.ForumID = '" & ForumID & "'
ORDER BY Svar.PostID DESC

Burde virke.
Avatar billede tele_lucien Nybegynder
08. januar 2003 - 00:12 #14
Ups glemte at skrive at i hver har fået 15 points.

Peace ;-)
Avatar billede janus_007 Nybegynder
08. januar 2003 - 09:30 #15
cyberfessor--> jeg er ikke uenig med dig omkring brugen af IDE's, syntes da også det er fedt med intellisense, autocompletion osv... Men ligegyldigt hvordan og hvorledes er det altid godt at ha en baggrundsviden omkring det der sker.

ps. jeg har tit været ude for at querybuilderen langt fra har kunnet det jeg ville. eks. tablealias, nested selects, updatejoins, variabledeclaration mm.
Avatar billede burningice Nybegynder
08. januar 2003 - 11:27 #16
janus_007>> selvfølgelig... lidt baggrundsviden er god at have, men mon ikke at tele_lucien har det, siden han har fået smidt sql'en sammen som han beskriver i sit spm?
ang. de forskellige ting beskriver der må jeg ærligt indrømme at jeg kun kender til tablealiases, så til det behov jeg bruger databaser til kan jeg sagtens klare mig med en querybuilder, og det vil jeg tro at tele_lucien også kan :)
Avatar billede tele_lucien Nybegynder
08. januar 2003 - 17:38 #17
Hejsa der.......

Jeg kan da lidt SQL, sådan da. Men det varer ikke længe så rykker jeg over til at bruge SPROC'S. Der er helt sikkert.

Mindre trafik på netværket, større sikkerhed og pænnere kode syntes jeg.

Men det er da vidst ikke lige til. Men det går nok.....

BTW, jeg elsker MS SQL Serveren Enterprise manager. Der er en fed Query builder i også. Nam nam........ ;-)

Peace

/Lucien
Avatar billede janus_007 Nybegynder
08. januar 2003 - 18:09 #18
Hej igen...

Altid rart med lidt debat, intet ondt i det :O)

Jeg kan forøvrigt anbefale en god Transact-SQL bog, når du skal igang med sproc's

Advanced Transact-SQL
for SQL Server 2000
http://www.amazon.co.uk/exec/obidos/ASIN/1893115828/qid%3D/026-4970019-3539601
Avatar billede tele_lucien Nybegynder
08. januar 2003 - 18:20 #19
Okay..........fed!

Takker,- Advanced betyder det man skal have kendskab til det på forhånd?

:-(
Avatar billede janus_007 Nybegynder
08. januar 2003 - 18:29 #20
Næh den henvender sig både til newbies og pro's. Men det er naturligvis klart at kendskab til SQL er et must ;O) - Men det har du jo også....

Jeg anede intet om TSQL da jeg åbnede bogen, og nu ved jeg næsten alt *GG* (jaja, næsten da)
Avatar billede tele_lucien Nybegynder
08. januar 2003 - 18:48 #21
hehe.......... okay. Cool,-

Den prøver jeg sgu så, også for at have andre bøger end fra Wrox.

Jeg er ellers meget til Wrox bøger. Kender du det forlag?
Avatar billede janus_007 Nybegynder
08. januar 2003 - 22:30 #22
Ja det kender jeg godt, har selv en del bøger derfra. Og har altid været mere eller mindre tilhænger af dem, men med tiden har jeg fået øjnene op for andre forlag også. Og jeg må sige, at ikke alle Wrox bøger er lige gode ;O)
Jeg holder eks.vis også af bøger fra Deitel&Deitel  og O'Reilly
Avatar billede tele_lucien Nybegynder
08. januar 2003 - 22:36 #23
Deitel&Deitel kender jeg ikke!

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