Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Recoaro Terme (VI) - Italy
    Messaggi
    1

    Column unknown su db firebird

    salve a tutti. Premetto di non aver alcuna esperienza con database sql e simili prima di una settimana fa, quindi probabilmente faccio degli errori.

    Comunque devo estrarre dei dati da più tabelle in un database firebird, ho provato la seguente query:

    codice:
    SELECT PRODUZIONE_T.NUMEROCOMMESSA, ANGCLIENTIFORNITORI.RAGIONESOCIALE1, PRODUZIONE_T.DATACONSEGNA, ANGUTENTI.NOMINATIVO FROM (SELECT PRODUZIONE_T.NUMEROCOMMESSA, ANGCLIENTIFORNITORI.RAGIONESOCIALE1, PRODUZIONE_T.DATACONSEGNA FROM PRODUZIONE_T LEFT OUTER JOIN ORDINI_T ON PRODUZIONE_T.CODORDINE=ORDINI_T.CODORDINE INNER JOIN ANGCLIENTIFORNITORI ON ANGCLIENTIFORNITORI.CODCLIFOR=ORDINI_T.CODCLIFOR) INNER JOIN (SELECT ANGUTENTI.NOMINATIVO FROM ANGUTENTI) ON PRODUZIONE_T.RESPONSABILEUC = ANGUTENTI.IDUTENTE ORDER BY PRODUZIONE_T.NUMEROCOMMESSA;
    Tuttavia ricevo il seguente errore:

    Engine Error (code = 335544569):
    Dynamic SQL Error.
    SQL error code = -206.
    Column unknown.
    PRODUZIONE_T.RESPONSABILEUC.
    At line 1, column 476.


    SQL Error (code = -206):
    Column does not belong to referenced table.
    Vi posso assicurare che la colonna produzione_t.responsabileuc esiste. Ho perfino utilizzato l'sql editor di Firebird Maestro che m'ha suggerito la compilazione per assicurarmene.

    Ho provato pure ad invertire i membri dell'uguaglianza angutenti.idutente=produzione_t.responabileuc ed ottengo il medesimo errore con "angutenti.idutente"

    Perché ottengo questo errore? Possibili soluzioni?
    Ultima modifica di cinziorecoaro; 23-06-2017 a 10:27 Motivo: aggionrnamento

  2. #2
    trucco: se ci si prende la briga di scrivere il codice in maniera ordinata (correttamente indentata)

    codice:
    SELECT 
    	PRODUZIONE_T.NUMEROCOMMESSA, 
    	ANGCLIENTIFORNITORI.RAGIONESOCIALE1, 
    	PRODUZIONE_T.DATACONSEGNA, 
    	ANGUTENTI.NOMINATIVO 
    
    
    FROM 
    	(SELECT 
    		PRODUZIONE_T.NUMEROCOMMESSA, 
    		ANGCLIENTIFORNITORI.RAGIONESOCIALE1, 
    		PRODUZIONE_T.DATACONSEGNA 
    	 FROM 
    		PRODUZIONE_T 
    		LEFT OUTER JOIN ORDINI_T ON PRODUZIONE_T.CODORDINE=ORDINI_T.CODORDINE 
    		INNER JOIN ANGCLIENTIFORNITORI ON ANGCLIENTIFORNITORI.CODCLIFOR=ORDINI_T.CODCLIFOR)
    
    
    	INNER JOIN 
    		(SELECT 
    			ANGUTENTI.NOMINATIVO 
    		 FROM 
    			ANGUTENTI) ON PRODUZIONE_T.RESPONSABILEUC = ANGUTENTI.IDUTENTE 
    
    
    ORDER BY 
    	PRODUZIONE_T.NUMEROCOMMESSA;
    si vede subito che la tabella PRODUZIONE_T non è esposta dove viene richiamata: ragionaci un attimo e capirai

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    residenza
    Recoaro Terme (VI) - Italy
    Messaggi
    1
    grazie per la risposta effettivamente è più chiaro il codice messo così. Purtroppo, mi scuso, essendo novizio ed autodidatta ammetto di non aver la minima idea di cosa intendi per "non è esposta".

  4. #4
    (uso delle query a cacchio, ok?, ma è solo per spiegare)

    SELECT TAB1.NOME FROM TAB1 -- è ok, i due verdisi "vedono"
    SELECT TAB1.NOME FROM (SELECT TAB1.NOME FROM TAB1 JOIN TAB2 ON TAB1.ID=TAB2.ID) -- NON è ok, perché i due rossi non si "vedono". La tabella TAB1 che sta dentro le parentesi non si vede da fuori le parentesi

    dovresti fare così

    SELECT T1.NOME FROM (SELECT TAB1.NOME FROM TAB1 JOIN TAB2 ON TAB1.ID=TAB2.ID) AS T1 -- con l'alias, i due viola si "vedono"

    sistema la tua

Tag per questa discussione

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.