Avatar billede Sinox Nybegynder
21. april 2013 - 09:47 Der er 2 kommentarer og
1 løsning

Hjælp til SQL - forbinde tabeller

Hejsa..
Jeg har en række tabeller som skal spille sammen og have dannet en SQL sætning

tbl_guide_device
DEVICEID

tbl_guide_plug2device
PLUGID - DEVICEID

tbl_guide_plug2product
PLUGID - PRODUCTID

tbl_customer_selection
CUSTOMERID - PRODUCTID

Udfordringen er, at jeg med en SQL kun skal liste de devices som kan forbindes med tbl_customer_selection.

Det vil sige, jeg skal finde mellem

CustomerID > productid > plugid > deviceid

Nogle som kan hjælpe mig lidt på vej?
Avatar billede Sinox Nybegynder
21. april 2013 - 10:01 #1
Jeg er PT ude i noget der ser sådan her ud


                strSQL = strSQL & "SELECT * from sinox_guide_device "
   
                strSQL = strSQL & "INNER JOIN sinox_guide_device_phrase ON sinox_guide_device.deviceid = sinox_guide_device_phrase.deviceid "
                   
                strSQL = strSQL & "INNER JOIN sinox_guide_plug2device ON sinox_guide_plug2device.deviceid = sinox_guide_device.deviceid "
   
                strSQL = strSQL & "INNER JOIN sinox_guide_plug2product ON sinox_guide_plug2product.plugid1 = sinox_guide_plug2device.plugid "
   
                strSQL = strSQL & "INNER JOIN sinox_guide_customer_selection ON sinox_guide_customer_selection.productid = sinox_guide_plug2device.productid "
                   
                strSQL = strSQL & "WHERE sinox_guide_device_phrase.langcode = 'en' AND sinox_guide_device.rid <> 0 AND sinox_guide_customer_selection.customerid = " & rsCustomer("customerid") & " "
               
                strSQL = strSQL & "ORDER BY sinox_guide_device_phrase.title"
Avatar billede Sinox Nybegynder
21. april 2013 - 10:21 #2
Jeg fandt sq frem til det

                strSQL = "SELECT * from sinox_guide_device "
   
                strSQL = strSQL & "INNER JOIN sinox_guide_device_phrase ON sinox_guide_device.deviceid = sinox_guide_device_phrase.deviceid "
                   
                strSQL = strSQL & "INNER JOIN sinox_guide_plug2device ON sinox_guide_plug2device.deviceid = sinox_guide_device.deviceid "
   
                strSQL = strSQL & "INNER JOIN sinox_guide_plug2product ON sinox_guide_plug2product.plugid1 = sinox_guide_plug2device.plugid "
   
                strSQL = strSQL & "INNER JOIN sinox_guide_customer_selection ON sinox_guide_customer_selection.productid = sinox_guide_plug2product.productid "
                   
                strSQL = strSQL & "WHERE sinox_guide_device_phrase.langcode = 'en' AND sinox_guide_device.rid <> 0 AND sinox_guide_customer_selection.customerid = " & rsCustomer("customerid") & " "
           
                strSQL = strSQL & "GROUP BY sinox_guide_device.deviceid "   
           
                strSQL = strSQL & "ORDER BY sinox_guide_device_phrase.title"
21. april 2013 - 11:39 #3
Problemstillingen i dit oprindelige spørgsmål var at liste devices som kunne forbindes med en customer selection.  Med den proboemstilling og de tabeller du opgiver burde din query så kunne begrænses til:

SELECT d.*
FROM tbl_guide_device d
JOIN tbl_guide_plug2device pd ON d.deviceid = pd.deviceid
JOIN tbl_guide_plug2product pp ON pd.plugid = pp.plugid
JOIN tbl_customer_selection cs ON pp.productid = cs.productid

For at gøre det kortere og mere oversigteligt anvender jeg alias'er (øgenavne) på tabellerne, for eksempel at jeg kalder tbl_gjuide_device for 'd'.  Yderligere anvender jeg, at i mysql giver JOIN det samme resultat som INNER JOIN.  I mit forslag får du kun udskrevet de data der står i tbl_guide_device tabellen.

Det du skriver i #1 og #2 tyder på, at problemstillingen er udvidet i forhold til hvad du skriver i dit oprindelige spørgsmål, og du synes at anvende et antal flere tabeller som du ikke beskriver.  Det har jeg ikke forsøgt at tage stilling til.
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