Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Primo select su tabelle multiple aiuto..

    Mi trovo a dover eseguire un select su più tabelle e non so come estrarre i dati da, ad esempio, due tabelle (in realtà sarebbero di più, ma vorrei prima capire come si ricavano i dati da due tabelle...) dove due colonne sono legate fra di loro con delle foreign key..

    Vado con ordine, la tabella principale é questa:

    si chiama "giorni" ed ha i seguenti campi:

    codice:
    id (int not null primary key auto_increment)
    giorno (date)
    id_autista (int not null) (foreign key)
    ...
    l'ultima colonna ha un vincolo (foreign key) con la seguente tabella "autisti" che ha i seguenti campi:

    codice:
    id (int not null primary key auto_increment)
    nome (text)
    telefono (text)
    email (text)
    ditta (text)
    il vincolo tra la prima tabella "giorni" ha la colonna "id_autista" vincolata con la colonna "id" della tabella "autisti".

    Come faccio ad estrapolare i dati dalla tabella giorni e nella stessa query estrapolare i dati della colonna id_autista che é collegata alla colonna "id" della tabella autisti?

    select id, giorno from giorni;

    così estrapolo i dati delle prime due colonne da giorni, ma per estrapolare anche il nome dell'autista (dalla tabella autisti) tramite il campo id_autista che é lo stesso valore del campo id della tabella autisti e quindi da quello prendere il nome, come faccio?

    Scusate, spero di essere stato chiaro e non aver fatto troppi giri di parole...

  2. #2
    indichiamo pls il db come da regolamento?

  3. #3
    scusami, il db che uso é mysql

  4. #4

  5. #5
    codice:
    SELECT
       TG.giorno,
       TA.nome,
       ... altre colonne?
    FROM
       giorni TG JOIN autisti TA ON TG.id_autista=TA.id
    that easy

  6. #6
    grazie per la query funziona, solo che non riesco a comprenderla del tutto...

    inanzitutto non conoscevo la sintassi TG che credo voglia dire tablegiorni, onestamente non sapevo si potesse abbreviare il nome della tabella in questo modo. Infatti per essere sicuro ho dapprima ricopiato la tua query pari pari per vedere se funzionava (ed ovviamente funzionava). Poi ho tradotto la tua query, vedendo che funzionava, però mi sfugge la seconda parte.. Vado con ordine, inanzitutto ecco come ho tradotto la tua query:

    codice:
    SELECT giorni.giorno, autisti.nome FROM giorni giorni JOIN autisti autisti ON giorni.id_autisti=autisti.id;
    capisco tutto fino a FROM giorni. Poi capisco l' ultima parte ON giorni.id_autisti=autisti.id;

    La prima parte che arriva fino a FROM giorni é un semplice select, no problem.

    L'ultima parte ON giorni.id_autisti=autisti.id dice prendimi i risultati dove i due "id", delle due colonne id_autisti ed id delle rispettive tabelle giorni ed autisti sono uguali.

    La parte centrale non la capisco.. cioé giorni JOIN autisti autisti mi confonde un pò..

    Per non disturbarti oltre, se hai un link da passarmi per i select multipli (con riferimenti alle FK) ti sarei grato, così da non stressarti ulteriormente

  7. #7
    TG e TA sono degli alias, assolutamente arbitrari - e servono per aumentare la leggibilità della query. potevi usare G, o T1 o XZ, oppure anche niente. usare un alias uguale al nome della tabella (come hai fatto tu) non serve a niente

  8. #8
    grazie, non conoscevo gli alias, ora mi é più chiaro

    Per quanto riguarda i miei alias (li chiamerò così ora ) io avevo semplicemente anteposto il nome della tabella al nome della colonna a cui facevo/faccio riferimento

    Ora penso di aver capito meglio il tutto, grazie ancora per la spiegazione e la pazienza

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.