• User

    dovrebbe essere così:

    $query="SELECT IDRealizzatore, IDCostruttore from Dati where id='4'";

    ops...ho dimenticato un pezzo...

    $query="SELECT IDRealizzatore, IDCostruttore from Dati AND Nominativo from Nominativo where id='4'";


  • Super User

    A parte la risposta di Mappex, che fa riferimento ad una sintassi SQL a me sconosciuta, c'è da osservare la mancaza di formalismo (non necessariamente accademico) negli enunciati del problema, posti da Lunas.

    Ci provo, se ho compreso il problema formulato.

    Definiamo:

    tabella_nominativo := Tabella nominativo;
    tabella_dati := Tabella dati;

    Allora:

    SELECT TN.Nominativo nominativo FROM tabella_nominativo AS TN, tabella_dati AS TD WHERE TN.ID=TD.IDRealizzatore AND TD.ID=4;
    

    Ho cercato di utilizzare una sintassi molto "larga". Puoi cercare di renderla più compatta e meglio ottimizzata (più efficace), conoscendo il tuo DBMS.


  • User

    @Serp said:

    c'è da osservare la mancaza di formalismo (non necessariamente accademico) negli enunciati del problema, posti da Lunas.

    Perdonatemi per il mancato formalismo.
    Avrei bisogno di un'altra dritta. Come faccio a richiamare i due Nominativi nel caso in cui i due campi IDRealizzatore-IDCostruttore fossero valorizzati?
    Se nel mio record ho due ID (IDRealizzatore IDCostruttore ) diversi, come faccio ad estrarre due volte il nominativo?

    Grazie ancora
    Stefano


  • Super User

    Ciao Lunas,
    non vorei sparare alla cieca, ma una descrizione formale e (in prosa :): come intendi usarle nella tua applicazione) delle tue tabelle non guasterebbe.

    Ciao
    :ciauz:


  • User

    Sperando di non creare troppa confusione (Ho dovuto cammbiare i nomi ai campi) Vi scrivo la SELECT che ho finalmente elaborato:

    $q1 = "SELECT n.Cognome as Autore, m.Cognome as AltroAutore FROM disegni d, nomi n , nomi m WHERE ((d.IDAutore = n.IDNomi and d.IDAltroAut = m.IDNomi))";

    Adesso però il problema è che se un campo non è valorizzato non mi viene visualizzato neanche il corrispondente.
    Per esempio se un campo IDAutore è valorizzato mentre IDAltroAut non è valorrizzato non viene estratto il Cognome.

    Suggerimenti?

    Grazie


  • Moderatore

    Sarò limitato ma mi spieghi a cosa ti serve sta query?

    Così magari potrei provare ad aiutarti anche io.

    In linea d massima credo che un join ti aiuterebbe se è ciò che penso che sia.
    Semplicemente: che devi fare? 🙂

    :ciauz:


  • User

    Ok, provo a spiegarTi.
    Nella tabella Disegni ho due campi "IDAutore" e "IDAltroAut" che fanno riferimento al campo Cognome nella tabella "nomi".
    Si tratta di questo; in alcune situazioni devo estrarre due volte il Cognome perchè i due ID sono entrambi valorizzati, e questo dopo mille sforzi sono riuscito a farlo. Adesso mi si presenta il problema che quando uno dei due campi non è valorizzato non mi restituisce nessun dato.
    Hai dei suggerimenti?

    Grazie per la pazienza
    Stefano


  • User Attivo

    effetivamente Lunas non è chi ti stai spiegando bene, nonostante il problema sembri semplice. Ci provo io con due left join:
    image

    SELECT D.id, N1.nominativo, N2.nominativo
    FROM (dati AS D LEFT JOIN nominativo AS N1 ON D.id_realizzatore = N1.ID) LEFT JOIN nominativo AS N2 ON D.id_autore = N2.ID
    

    c'ho beccato?! :mmm:


  • User

    Perfetto!!!! Mamma mia non ne potevo più.
    Scusatemi tutti se Vi ho obbligato a "tradurre" i miei post!!! Spero di diventare professionale anch'io.

    Se posso permettermi avrei un'altra richiesta, dopo di chè scomparirò 😉
    Esiste la possibilità di estrarre un terzo nominativo? Chiaramente riferito ad un altro ID sulla tabella principale.

    Grazie a tutti
    Stefano (un uomo salvato)


  • Super User

    ciao stefano,
    non è questione di essere professore o professionale :), il problema sta nel fatto che prima di riuscire a formulare una risposta è necessario comprendere il problema.

    tornando al tuo, puoi estrarre tutti i nominativi che desideri utilizzando in modo corretto le relazioni (left, right, inner join).

    Premetto che, a meno di condizioni ed esigenze particolari, la struttura che stai impiegando non è proprio correttissima.

    Ti butto li un consiglio:

    relazione molti a molti:

    poniamo di avere la tabella fornitori (tab1) e la tabella articoli (tab2) e dobbiamo archiviare le informazioni che ci dicono per ogni articolo da quali fornitori lo acquistiamo.
    Ogni articolo può essere acquistato da uno o più fornitori.

    tabella 1:

    id
    nome

    tabella 2:

    id
    articolo

    tabella 3 necessaria per la relazione molti a molti:
    id_fornitore
    id_articolo

    con le opportune relazioni è possibile ottenere tutti i legami articolo fornitore creando una consistenza corretta nell'archivio dati.

    :ciauz:


  • User

    Come non detto. Mi sono fatto prendere dall'euforia del risultato che insieme ai ringraziamenti ho posto subito una domanda.
    In realtà ho risolto modificando il codice al volo.

    Purtroppo non posso trasmetterVi la mia contentezza per aver risolto questo problema.
    Se non altro adesso non mi avrete più tra i piedi....almeno per ora.

    Grazie ancora :yuppi:
    Stefano


  • User

    Grazie Tymba, mi hi anticipato di alcuni secondi.
    Ti ringrazio per i preziosi consigli.
    Il fatto è che stò mettendo mano ad un progetto esistente e, per la prima volta, devo consegnare un lavoro ad un cliente. Non Ti dico lo stato d'animo.
    Terrò a mente i Tuoi preziosi consigli.
    Grazie
    Stefano