Avatar billede entracore Nybegynder
05. august 2002 - 23:40 Der er 5 kommentarer og
1 løsning

Inner Join tabel

Hej

Jeg har et mindre problem med en SQL streng.

Jeg har en tabel ved navn Tbl_Log_Cart der indeholder en række id'ere.

Jeg har en søge runtine der finder en række id'ere der matcher en given søgeteksten. Hvis id'erne er identiske med de id'ere fra tabellen Tbl_Log_Cart skal de sorteres fra. Problemet er at det sker bare ikke.

Jeg poster min SQL sætning i håb om at der nogle der kan gennemskue mit problem. På forhånd tak.


Select
    View_B.Book_ID,
    View_B.Book_Title,
    View_B.Book_Publication_Date,
    View_B.Book_Price,
    View_B.Book_Publisher_Name,
    View_B.Book_Publisher_City
               
From
    Tbl_Index Tbl_I
Inner Join
    Tbl_Index_Book_Relation Tbl_IBR
On
    Tbl_I.Index_ID = Tbl_IBR.Index_ID
Inner Join
    View_Book View_B
On
    Tbl_IBR.Book_ID = View_B.Book_ID And View_B.Book_Category_ID = 8
Inner Join
    -- HER JOINER JEG TABELLEN Tbl_Log_Cart
    Tbl_Log_Cart Tbl_LC
On
    -- HER FORSØGER JEG AT FILTRERE DE ID'ERE FRA DER ALLEREDE LIGGER I TABELLEN Tbl_Log_Cart
    Tbl_IBR.Book_ID <> Tbl_LC.Book_ID
Where
    Tbl_I.Index_Value Like '%e%' And (Tbl_I.Index_Type_ID = 1 Or Tbl_I.Index_Type_ID = 7)
Group By
    View_B.Book_ID,
    View_B.Book_Title,
    View_B.Book_Publication_Date,
    View_B.Book_Price,
    View_B.Book_Publisher_Name,
    View_B.Book_Publisher_City
Avatar billede bennytordrup Nybegynder
06. august 2002 - 08:23 #1
Select
    View_B.Book_ID,
    View_B.Book_Title,
    View_B.Book_Publication_Date,
    View_B.Book_Price,
    View_B.Book_Publisher_Name,
    View_B.Book_Publisher_City
               
From
    Tbl_Index Tbl_I
Inner Join
    Tbl_Index_Book_Relation Tbl_IBR
On
    Tbl_I.Index_ID = Tbl_IBR.Index_ID
Inner Join
    View_Book View_B
On
    Tbl_IBR.Book_ID = View_B.Book_ID And View_B.Book_Category_ID = 8
Where
    Tb1_IBR.Book_ID not in (select distinct Book_ID from Tbl_Log_Cart) and
    Tbl_I.Index_Value Like '%e%' And (Tbl_I.Index_Type_ID = 1 Or Tbl_I.Index_Type_ID = 7)
Group By
    View_B.Book_ID,
    View_B.Book_Title,
    View_B.Book_Publication_Date,
    View_B.Book_Price,
    View_B.Book_Publisher_Name,
    View_B.Book_Publisher_City
Avatar billede neteffect Nybegynder
06. august 2002 - 08:35 #2
Skal der mon ikke være nogle parenteser om de der INNER JOINS, så hver af dem JOIN'er mellem 2 resultatsæt?
Avatar billede bennytordrup Nybegynder
06. august 2002 - 08:38 #3
neteffect > AFAIR betyde det ikke noget, idet SQL Serverens query optimizer selv laver noget optimering af statementet.

At det så vil give en bedre læsbarhed er en anden sag (sammen med indrykning af de enkelte joins i flere niveauer)
Avatar billede entracore Nybegynder
06. august 2002 - 09:31 #4
benny.tordrup >> Det er en løsning at sammenligne Book_ID med en Select statement. Jeg har forsøgt mig med den og det virker - men jeg synes ikke den er en særlig pæn måde at gøre det på. Desuden performer det heller ikke særligt godt. Men i mangel af bedre er der vel ikke andet at gøre :-)
Avatar billede proaccess Nybegynder
07. august 2002 - 13:56 #5
Kan man ikke bruge LEFT OUTER JOIN, og så selecte efter NULL i Tbl_Log_Cart...

Select
    View_B.Book_ID,
    View_B.Book_Title,
    View_B.Book_Publication_Date,
    View_B.Book_Price,
    View_B.Book_Publisher_Name,
    View_B.Book_Publisher_City
From
    Tbl_Index Tbl_I
Left Outer Join
    Tbl_Index_Book_Relation Tbl_IBR
On
    Tbl_I.Index_ID = Tbl_IBR.Index_ID
Left Outer Join
    View_Book View_B
On
    Tbl_IBR.Book_ID = View_B.Book_ID And View_B.Book_Category_ID = 8
Left Outer Join
    Tbl_Log_Cart Tbl_LC
On
    Tbl_IBR.Book_ID = Tbl_LC.Book_ID
Where
    Tbl_LC.Book_ID Is Null And Tbl_I.Index_Value Like '%e%' And (Tbl_I.Index_Type_ID = 1 Or Tbl_I.Index_Type_ID = 7)
Group By
    View_B.Book_ID,
    View_B.Book_Title,
    View_B.Book_Publication_Date,
    View_B.Book_Price,
    View_B.Book_Publisher_Name,
    View_B.Book_Publisher_City
Avatar billede entracore Nybegynder
08. august 2002 - 11:27 #6
proaccess >> Jo det kan man godt - Tusind tak for hjælpen :-)
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