Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Left Join fra due tabelle

    Salve ho un semplice quesito da porre:

    Ho 2 tabelle tab1 e tab2.
    La prima ha i 4 campi: ID_film, Nome_Film, id_attore, Id_regista.
    La seconda ha i 2 campi: ID, Nome_Cognome

    Nei campi id_attore e id_regista di tab1, memorizzo i vari valori che ho nel campo ID di tab2.

    Quindi se faccio un 'SELECT Nome_Film, id_attore, id_regista FROM tab1', magari ottengo come risultato: Idiana Jones e l'ultima crociata || 33 || 10

    Ho provato a fare un LEFT JOIN fra tab1 e tab2 collegando i campi id_attore e ID ottenendo in output: Idiana Jones e l'ultima crociata || Harrison Ford.

    Ora vorrei sapere se esiste il modo di ottenere un'unione fra le due tabelle, in modo tale che il record risultante sia: Idiana Jones e l'ultima crociata || Harrison Ford || Steven Spielberg

    Ossia vorrei sapere se c'è la possibilità di un LEFT JOIN fra TRE campi di due tabelle, in modo tale che con un'unica query io possa trasformare il record Idiana Jones e l'ultima crociata || 33 || 10
    in Idiana Jones e l'ultima crociata || Harrison Ford || Steven Spielberg
    Grazie!

  2. #2
    perché no?

    codice:
    SELECT
       elenco_campi
    FROM
       tabella_film TF LEFT JOIN tabella_persone TP1 ON TF.id_attore=TP1.id
       LEFT JOIN tabella_persone TP2 ON TF.id_regista=TP2.id
    forse va adatattata (dipende dal db, che NON hai indicato...)

  3. #3
    Ciao! Il Db è Mysql.

    Il problema è che i nomi dell'attore e del regista risiedono nella stessa tabella...Quindi nel tuo codice di esempio Tp1=Tp2. Eseguendo la query, ottengo il messaggio di errore Not unique table/alias: 'Tp1'.
    Potresti farmi notare di separare i registi e gli attori...però sono convinto che si possa fare lo stesso ....si ma come

  4. #4
    l'operazione è perfettamente lecita. posta la tua query

  5. #5
    Ecco qui...

    $query='SELECT movie_name, movie_actor, movie_director FROM movie LEFT JOIN people ON movie.movie_actor=people.people_isactor LEFT JOIN people ON movie.movie_director=people.people_isdirector';

    dove movie è la tabella nella quale ci sono i nomi dei film e gli ID della tabella people. Ad ogni ID di quest'ultima, corrisponde il nome di un attore o di un regista

  6. #6
    dove sono gli alias? cfr il mio esempio

  7. #7
    mmmm...Alias? Spiegati meglio, purtroppo non sono molto esperto di Sql....

  8. #8
    'SELECT movie_name, movie_actor, movie_director FROM movie TF LEFT JOIN people TP1 ON TF.movie_actor=TP1.people_isactor LEFT JOIN people TP2 ON TF.movie_director=TP2.people_isdirector';

    non mi dà un errore ma ottengo una sola colonna con alcuni nomi di film...

  9. #9
    posta le strutture delle tabelle, i nomi dei campi sono completamente diversi da quelli dell'esempio...

  10. #10
    Tabella movie: CREATE TABLE movie ( movie_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, movie_name VARCHAR(255) NOT NULL, movie_type TINYINT NOT NULL DEFAULT 0, movie_year SMALLINT NULL DEFAULT 0, movie_director INTEGER UNSIGNED NOT NULL DEFAULT 0, movie_leadactor INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (movie_id), KEY movie_type (movie_type, movie_year) ) ENGINE = MyISAM';

    Tabella people: CREATE TABLE people ( people_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, people_fullname VARCHAR(255) NOT NULL, people_isactor TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, people_isdirector TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (people_id) ) ENGINE = MyISAM';

    Dati tabella movie: INSERT INTO movie (movie_id, movie_name, movie_type, movie_year, movie_leadactor, movie_director) VALUES (1, "Bruce Almighty", 5, 2003, 1, 2), (2, "Office Space", 5, 1999, 5, 6), (3, "Grand Canyon", 2, 1991, 4, 3)';

    Dati tabella people:INSERT INTO people (people_id, people_fullname, people_isactor, people_isdirector) VALUES (1, "Jim Carrey", 1, 0), (2, "Tom Shadyac", 0, 1), (3, "Lawrence Kasdan", 0, 1), (4, "Kenin Kline", 1, 0), (5, "Ron Livingstone", 1, 0), (6, "Mike Judge", 0, 1)';

    Alcuni nomi non sono gli stessi...tipo movie_actor VS movie_leadactor però non credo sia quello, Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.