Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    9

    [PHP/MySql] Selezionare due stessi campi che contengono dati diversi

    Salve ragazzi ho un problema con una query. Devo selezionare due campi che contengono dati diversi ma che sono chiavi esterne di una stessa tabella, mi spiego meglio: ho una tabella "spostamenti" in cui sono presenti due campi "città_provenienza" e "città_destinazione" ed entrambi i campi contengono le rispettive chiavi primarie della città a cui fanno riferimento della tabella "città".
    Quale query dovrei eseguire per poter effettuare una SELECT di entrambi i campi?
    Ho provato a fare due select diverse (unite tramite l'UNION) in cui seleziono prima la provenienza e poi la destinazione ma non sono riuscito ad ottenere ciò che cercavo :/

  2. #2
    select
    elenco_colonne
    from
    spostamenti t1 join tabella_citta c1 on t1.idcittaprovenienza=c1.idcitta
    join tabella_citta c2 on t1.idcittadestinazione=c2.idcitta
    where c1.nomecitta='milano' and c2.nomecitta='roma'

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da ct95 Visualizza il messaggio
    Salve ragazzi ho un problema con una query. Devo selezionare due campi che contengono dati diversi ma che sono chiavi esterne di una stessa tabella, mi spiego meglio: ho una tabella "spostamenti" in cui sono presenti due campi "città_provenienza" e "città_destinazione" ed entrambi i campi contengono le rispettive chiavi primarie della città a cui fanno riferimento della tabella "città".
    Quale query dovrei eseguire per poter effettuare una SELECT di entrambi i campi?
    Ho provato a fare due select diverse (unite tramite l'UNION) in cui seleziono prima la provenienza e poi la destinazione ma non sono riuscito ad ottenere ciò che cercavo :/
    Qual'era la tua query ? Puoi fare un esempio di quello che vuoi ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    9
    Quote Originariamente inviata da optime Visualizza il messaggio
    select
    elenco_colonne
    from
    spostamenti t1 join tabella_citta c1 on t1.idcittaprovenienza=c1.idcitta
    join tabella_citta c2 on t1.idcittadestinazione=c2.idcitta
    where c1.nomecitta='milano' and c2.nomecitta='roma'
    scusami, ma sono alle prime armi.. potresti spiegarmk ciò che hai fatto? e le join non vanno nel where?

  5. #5
    le join sono join e NON vanno nel where.

    ho messo la tua tabella in join due volte con le città, per via della doppia chiave. il resto di conseguenza

    piuttosto, funziona? l'ho scritta al volo mentre facevo altro e non l'ho assolutamente provata!

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    9
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Qual'era la tua query ? Puoi fare un esempio di quello che vuoi ?
    la mia query dovrebbe essere una cosa del genere:
    "SELECT ID_spostamento, nome_spostamento, città_provenienza FROM spostamento, città WHERE spostamento.citta_provenienza =citta. id_citta UNION SELECT città_destinazione FROM spostamento, città WHERE spostamento.citta_destinazione=citta.id_citta"
    ma ovviamente è errata

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    9
    Quote Originariamente inviata da optime Visualizza il messaggio
    le join sono join e NON vanno nel where.

    ho messo la tua tabella in join due volte con le città, per via della doppia chiave. il resto di conseguenza

    piuttosto, funziona? l'ho scritta al volo mentre facevo altro e non l'ho assolutamente provata!
    adesso non sono a casa, potrò provarla soltanto domani

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da ct95 Visualizza il messaggio
    la mia query dovrebbe essere una cosa del genere:
    "SELECT ID_spostamento, nome_spostamento, città_provenienza FROM spostamento, città WHERE spostamento.citta_provenienza =citta. id_citta UNION SELECT città_destinazione FROM spostamento, città WHERE spostamento.citta_destinazione=citta.id_citta"
    ma ovviamente è errata
    la UNION consente di unire select dello stesso tipo. Nel tuo esempio non puo' funzionare perche i campi delle 2 select non hanno lo stesso numero di campi nè gli stessi tipi di dati. Di più la UNION accoda il risultato dell'ultima query al precedente.

    select pippo from tabella1
    union
    select caio from tabella 2

    se in tabella1 ho in pippo i numeri da 1 a 4 e in tabella2 ho in caio i numeri da 100 a 102 otterro':

    1
    2
    3
    4
    100
    101
    102
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    in pratica vuoi esplicitare il nome della città a partire dall'id nella tabella degli spostamenti. allora va benissimo la JOIN (che ti dà il risultato in un'unica riga) e non la UNION (che invece ti dà il risultato su due righe). Se prendi il mio esempio, togli semplicemente la WHERE.
    A dire il vero si potrebbe fare anche con la UNION, ma complicando di non poco il codice (cfr http://lnx.dicesare.com/sql/sql-come...-di-risultati/) ma allora tanto vale usare la JOIN, che tra l'altro è anche lo strumento più adeguato.

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    9
    Quote Originariamente inviata da optime Visualizza il messaggio
    in pratica vuoi esplicitare il nome della città a partire dall'id nella tabella degli spostamenti. allora va benissimo la JOIN (che ti dà il risultato in un'unica riga) e non la UNION (che invece ti dà il risultato su due righe). Se prendi il mio esempio, togli semplicemente la WHERE.
    A dire il vero si potrebbe fare anche con la UNION, ma complicando di non poco il codice (cfr http://lnx.dicesare.com/sql/sql-come...-di-risultati/) ma allora tanto vale usare la JOIN, che tra l'altro è anche lo strumento più adeguato.
    non riesco a farla funzionare :/ come mai hai messo i vari t1, c1 e c2? qual è il modo più semplice per prendere i valori da due campi diversi ma che riconducono alla stessa tabella? scusami ma ho poca esperienza :/

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.