Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Sql e database

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142

    Sql e database

    ciao a tutti, non ho trovato la sezione dedicata a sql quindi spero di scrivere giusto qui.

    Sto lavorando su un database e sul linguaggio sql, premetto che sono alle prime armi ma mi trovo in questa situazione:

    ho 3 tabelle,

    1) contiene id e nome
    2) contiene l'associazione N:M tra tabella 1 e 3 contenente quindi id e id2
    3) contiene id2 nome2

    ora attraverso il linguaggio sql come faccio a dire di visualizzarmi il nome e il nome2 che osno in relazione?

    sto provando con il join ma c'è qualcosa che mi sfugge

    grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    codice:
    select 
    tab1.nome,
    tab3.nome2
    from tab2
    left join tab1 on tab1.id = tab2.id
    left join tab3 on tab3.id2 = tab2.id2
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    provato, non mi da errore ma mi da nessun dato trovato..

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    scusa la domanda ma nelle tabelle ci sono i dati?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    beh certo

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    ok posta qualche record di tab2

    e posta anche la query che fai
    e la struttura esatta delle tabelle

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    allora la tabella1 che d'ora inpoi chiameremo navi contiene 2 campi, 1 è idnave e l'altro è nomenave ed è popolata da dati

    la tabella 3 che d'ora in poi chiameremo rotte contiene 2 campi, 1 è idrotta e l'altro è nomerotta ed è popolata da dati

    la tabella 2 che d'ora in poi chiameremo rotte_percorse contiene 2 campi che non sono altro che le 2 chiavi della tabella navi e rotte e non è popolata (credo sia normale essendo solo la tabella di relazione)

    codice:
    select NOMENAVE, ROTTE.NOMEROTTA
    from ROTTE_PERCORSE
    left join NAVI on NAVI.IDNAVE = ROTTE_PERCORSE.IDNAVE
    left join ROTTE on ROTTE.IDROTTA = ROTTE_PERCORSE.IDROTTA
    come mi hai scritto tu prima.. è tutto giusto?

  8. #8
    No è sbagliato, e infatti restituisce errore!!

    Comunque prova con questa.. A me funziona

    Premettendo di avere la situazione da te descritta come:

    - NAVI (IDNAVE , NOMENAVE)
    - ROTTE (IDROTTA, NOMEROTTA)
    - ROTTE_PERCORSE (IDNAVE, IDROTTA )

    codice:
    SELECT NAVI.NOMENAVE, ROTTE.NOMEROTTA
    FROM ROTTE
    INNER JOIN (NAVI INNER JOIN ROTTE_PERCORSE ON NAVI.IDNAVE = ROTTE_PERCORSE.ID_NAVE) ON ROTTE.IDROTTA = ROTTE_PERCORSE.ID_ROTTA;
    E ti restituisce ad esempio (con record inventati da me XD):

    NOMENAVE NOMEROTTA
    Nina 64ZSE
    Santa Maria 12XYZ
    Pinta 99PSE


    Ciao^^

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    mi sembra di aver capito che tu vuoi i nomi delle navi e delle rotte, partendo dalla tabella rotte percose....


    - NAVI (IDNAVE , NOMENAVE)
    - ROTTE (IDROTTA, NOMEROTTA)
    - ROTTE_PERCORSE (IDNAVE, IDROTTA )

    codice:
    SELECT 
    NAVI.NOMENAVE, 
    ROTTE.NOMEROTTA
    FROM ROTTE_PERCORSE
    LEFT JOIN NAVI ON NAVI.IDNAVE = ROTTE_PERCORSE.IDNAVE
    LEFT JOIN ROTTE ON ROTTE.IDROTTA = ROTTE_PERCORSE.IDROTTA
    e' ovvio che se la tabella ROTTE_PERCORSE e' senza record la tua query restituira' nessun record

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    quindi mi stai dicendo che rotte_percorse deve essere piena? rotte_percorse è stata creata così:

    codice:
    CREATE TABLE  "ROTTE_PERCORSE" 
       (	"IDNAVE" VARCHAR2(10) NOT NULL ENABLE, 
    	"IDROTTA" VARCHAR2(10) NOT NULL ENABLE, 
    	 CONSTRAINT "ROTTE_PERCORSE_PK" PRIMARY KEY ("IDNAVE", "IDROTTA") ENABLE, 
    	 CONSTRAINT "ROTTE_PERCORSE_FK" FOREIGN KEY ("IDNAVE")
    	  REFERENCES  "NAVI" ("IDNAVE") ENABLE, 
    	 CONSTRAINT "ROTTE_PERCORSE_FK2" FOREIGN KEY ("IDROTTA")
    	  REFERENCES  "ROTTE" ("IDROTTA") ENABLE
       )
    però adesso che ci penso se rotte_percorse è vuote come faccio a sapere una nave a che rotta è associata?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.