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

Discussione: Problema join

  1. #1

    Problema join

    Salve a tutti, mi trovo ad avere un db con le seguenti tabelle
    regioni:id,nome
    province:id,nome,regioni(chiave esterna che punta all'id delle regioni)

    Adesso voglio visualizzare l'id, il nome e il nome della regione di ogni provincia...io avevo pensato a questo ma non funziona...

    SELECT comuni.id,comuni.nome,comuni.province FROM comuni LEFT JOIN province ON comuni.province=province.nome WHERE province.id='2' LIMIT 0,20
    Andrea

    if($browser == 'internet explorer'){
    $bestemmie++;
    }

  2. #2

    Re: Problema join

    Originariamente inviato da Nedyc
    Salve a tutti, mi trovo ad avere un db con le seguenti tabelle
    regioni:id,nome
    province:id,nome,regioni(chiave esterna che punta all'id delle regioni)

    Adesso voglio visualizzare l'id, il nome e il nome della regione di ogni provincia...io avevo pensato a questo ma non funziona...

    SELECT comuni.id,comuni.nome,comuni.province FROM comuni LEFT JOIN province ON comuni.province=province.nome WHERE province.id='2' LIMIT 0,20
    bel mixer... hai una tabella "regioni" ed un'altra "province". Da dove spunterebbe la tabella "comuni" ????

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Gasp... ho sbagliato a trascrivere...
    le tabelle sono:
    province: id, nome
    comuni: id,nome,province(chiave ext)
    Andrea

    if($browser == 'internet explorer'){
    $bestemmie++;
    }

  4. #4
    Originariamente inviato da Nedyc
    Gasp... ho sbagliato a trascrivere...
    le tabelle sono:
    province: id, nome
    comuni: id,nome,province(chiave ext)

    ...

    Adesso voglio visualizzare l'id, il nome e il nome della regione di ogni provincia...
    Manca ancora la tabella delle regioni. Dovrebbe essere:

    regioni: id_regione, nome_regione
    province: id_provincia, nome_provincia, id_regione
    comuni: id_comune, nome_comune, id_provincia

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Si, a dire il vero ce ne sono anche altre :P
    Andrea

    if($browser == 'internet explorer'){
    $bestemmie++;
    }

  6. #6
    Originariamente inviato da Nedyc
    Si, a dire il vero ce ne sono anche altre :P
    ok. Fai un reboot del thread e riparti dall'inizio.

    Quali tabelle, quali campi e quale risultato vorresti ottenere.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Allora, sto creando un cms, mi connetto al database e leggo tutti i nomi delle tabelle e per ogni tabella leggo ogni campo e li passo a jquery tramite json!
    Nella parte js creo una select box con tutti i nomi delle tabelle, quando ne seleziono una tramite ajax/json seleziono tutti i valori dei campi. Per le tabelle normali va tutto alla perfezione, se però ho delle chiavi esterne vorrei che al posto dell'id esca il valore del campo da me specificato per quella tabella (a questo scopo imposto un altra tabella che chiamerò campiSpeciali):

    Per cui mi trovo in questa situazione:
    campiSpeciali: id tabella campo tipo azione
    comuni: id nome province(ext)
    province: id nome regioni(ext)
    regioni: id nome descrizione video
    strutture: id nome comuni(ext) stelle tel fax indirizzo cap sito email selezionato
    users: id username pswd email type

    Ora, tramite php/ajax riesco a sapere se il campo è esterno e a quale tabella/campo faccio riferimento, e mi costruisco la query che mi serve: assumiamo per esempio che voglio visualizzare i comuni, e che sappia che al posto del campo province devo visualizzare non l'id ma bensì il nome di essa in ogni riga della tabella comuni...
    io avevo pensato una query del tipo:

    SELECT comuni.id,comuni.nome,comuni.province FROM comuni LEFT JOIN province ON comuni.province=province.nome WHERE province.id='2' LIMIT 0,20

    Ma non mi restituisce niente...
    Andrea

    if($browser == 'internet explorer'){
    $bestemmie++;
    }

  8. #8
    Ovviamente WHERE province.id='2' è solo una prova test, mi occuperò poi per ogni riga della tabella di sostituire il 2 con il valore del campo province
    Andrea

    if($browser == 'internet explorer'){
    $bestemmie++;
    }

  9. #9
    Originariamente inviato da Nedyc
    SELECT comuni.id,comuni.nome,comuni.province
    FROM comuni
    LEFT JOIN province ON comuni.province=province.nome
    WHERE province.id='2'
    LIMIT 0,20

    Ovviamente WHERE province.id='2' è solo una prova test, mi occuperò poi per ogni riga della tabella di sostituire il 2 con il valore del campo province
    Dalla query si vede come vai a cercare il nome delle provincie nella tabella comuni. Questo non e' corretto. Nella tabella comuni devi avere l'id della provincia e non il nome, quindi il nome lo devi prelevare dalla tabella province. Altra cosa: se indichi nel where la provincia si presume che tu voglia l'elenco completo dei comuni (o limit 20) di quella data provincia, ancora... se indichi la provincia significa che gia' la conosci a priori e non servirebbe estrarla dal db.

    codice:
    SELECT comuni.id, comuni.nome, province.nome
    FROM comuni 
    INNER JOIN province ON comuni.province=province.id 
    WHERE province.id='2' 
    LIMIT 0,20
    In sostanza: non puo' esistere un comune senza la provincia, quindi INNER JOIN e non LEFT JOIN. Nei comuni deve esserci il riferimento esterno "all'ID" delle province e non il nome della provincia. Il nome della provincia e' da prendere comunque nella tabella province.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Funziona!!!!!!
    Prendo occasione per porti un altro paio di domande a riguardo...
    Se in una tabella ho due chiavi esterne che si riferiscono a due tabelle diverse, esempio
    Tabella1:a,b,c
    Tabella2:d,e,f
    Tabella3:g,d(ext),a(ext)

    Come formo la query?
    Andrea

    if($browser == 'internet explorer'){
    $bestemmie++;
    }

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.