Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di 3n1gm4
    Registrato dal
    Jun 2003
    Messaggi
    27

    Mysql - Problema di JOIN

    create table campo
    (
    id_ca int not null AUTO_INCREMENT,
    nome_ca char(10) not null,
    PRIMARY KEY (id_ca)
    );

    create table conf
    (
    id_co int not null AUTO_INCREMENT,
    nome_co char(10) not null,
    PRIMARY KEY (id_co)
    );

    create table v
    (
    campo int not null,
    conf int not null,
    val blob,
    PRIMARY KEY (campo, conf),
    FOREIGN KEY (campo) REFERENCES campo(id_ca),
    FOREIGN KEY (conf) REFERENCES conf(id_co)
    );


    Supponiamo abbia inserito un conf "base" con un valore assegnato ad ogni CAMPO, poi ne voglio inserire una configurazione secondaria dove inserisco solo i valori dei campi che devono essere modificati rispetto alla configurazione base...

    Come devo strutturare la query in modo che se si sceglie "conf2" l'output abbia tutti i campi presenti della tabella campi selezionando il valore di conf2 dove possibile, altrimenti quello di conf base? non so se mi sono spiegato, credo ci sia da fare un left join ma non sono riuscito a far nulla di funzionante... Aiutatemi please

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Non ho capito.
    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

  3. #3
    Utente di HTML.it L'avatar di 3n1gm4
    Registrato dal
    Jun 2003
    Messaggi
    27
    nella tabella campo ci sono valori ben definiti (non ne verranno aggiunti mai altri dop ola creazione e primo riempimento del db) e contiene i i nomi dei parametri di configurazione.

    La tabella conf contiene i nomi della configurazione che puo' essere la conf base oppure conf2 oppure mariorossi, insomma un nome qualunque.

    Per la configurazione base ogni campo ha un valore, per le altre specifico solo il valore che cambia dalla configurazione base.

    In pratica mi servirebbe una query che, dato il nome di una configurazione (es. conf3 o mariorossi) mi dia in output la lista di tutti i campi, affiancati dal valore di quella configurazione se e' specificato o dal valore della conf base se non e' specificato...

    E' piu' chiaro così?

  4. #4
    Utente di HTML.it L'avatar di 3n1gm4
    Registrato dal
    Jun 2003
    Messaggi
    27
    up!

  5. #5
    Umm... ma nome_ca e nome_ca sei sempre sicuro che solo lunghi 10 caratteri???
    Altrimenti devi metterli di tipo varchar...
    Per la query se ho capito bene questa dovrebbe andare:
    codice:
    Select 'le collonne che vuoi estrarre'
       From campo inner join (v inner join conf on v.conf = conf.id_co) on campo.id_ca = v.campo
       Where conf.nome_co = 'valore dato per la ricerca'

    Inoltre... perchè PRIMARY KEY (campo, conf)??? campo è anche esterna... che senso ha???

  6. #6
    Utente di HTML.it L'avatar di 3n1gm4
    Registrato dal
    Jun 2003
    Messaggi
    27
    Ogni record di v e' individuabile univocamente nella relazione che c'e' tra campo e conf, per dirlo in parole piu' spicciole non ci puo' essere piu' di un record in v che abbiamo lo stesso valore di conf e lo stesso valore di campo, mi spiego?

    Ad ogni modo questa query non va bene, perche' cosi' avrei avrei in output sia i valori di campo della conf base che quelli dell'altra conf scelta, mentre deve esserci solo una voce per ogni campo...

    Effettivamente dovrei usare varchar per il nome della conf, per quanto riguarda i nomi dei campi, nessuno di essi supera i 10 caratteri

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.