|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Query SQL ... mi aiutate ???
Ho una tabella che contiene i seguenti campi :
(vi elenco i più significativi) nome_Stazione (codice alfanumerico di 4 caratteri) anno giuliano ... ... ... ... ... nome_Stazione,anno,giuliano insieme sono chiave primaria per la tabella Quello che devo fare è verificare se esiste l'informazione per un dato giuliano di un certo anno ma se l'informazione non esiste devo anche sapere per quale stazione non esiste .... Avevo quindi pensato a una left join tra un SELECT DISTINCT (nome_Stazione) FROM Tabella e SELECT nome_Stazione, anno , giuliano WHERE anno = 'anno' AND giuliano = 'giuliano' in questo modo se esistono delle informazioni per una determinata stazione ma non sono presenti ne giuliano ne anno per quella stazione cmq mi visualizzerà il nome stazione senza anno e giuliano ... dico bene ???? In sintassi SQL ??? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
Codice:
SELECT DISTINCT (nome_Stazione) FROM Tabella union SELECT nome_Stazione, anno , giuliano from (nome_Stazione) WHERE anno = 'anno' AND giuliano = 'giuliano' La parte in grassetto te l'eri dimenticata...
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Questa non mi funge :
SELECT DISTINCT A.nome_stazione, B.anno, B.giuliano FROM log AS A LEFT OUTER JOIN SELECT B.anno, B.giuliano FROM log as B WHERE anno='05' AND giuliano = '035' ON A.nome_stazione = B.nome_stazione |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
|
Quote:
Ad occhio non funge xchè nella tabella definita dalla seconda select devi indicare (nella select appunto) il campo nome_stazione che serve x la join. Cioe: SELECT DISTINCT A.nome_stazione, B.anno, B.giuliano FROM log AS A LEFT OUTER JOIN SELECT B.nome_stazione , B.anno, B.giuliano FROM log as B WHERE anno='05' AND giuliano = '035' ON A.nome_stazione = B.nome_stazione Per quanto riguarda la query proposta da maulattu a parte il fatto che non capisco cosa c'entri con il tuo problema sempre ad occhio Se ho capito bene ed il problema è quello di individuare i record nei quali i campi chiave siano vuoti dovresti semplicemente fare una select tipo: Select nome_stazione, anno, giuliano FROM log where (nome_stazione is null) OR (anno is null) OR (giuliano is Null) Bye |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
1) non puoi fare due select in una query 2) non serve SELECTare i campi per le clausole WHERE e ON 3) stai facendo un join suoi campi di una stessa tabella se proprio vuoi quella query: Codice:
SELECT DISTINCT A.nome_stazione, B.anno, B.giuliano FROM log A LEFT OUTER JOIN log B ON (B.anno='05' AND B.giuliano = '035' AND A.nome_stazione = B.nome_stazione) Ultima modifica di kk3z : 04-07-2005 alle 16:53. |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Quote:
Mai sentito parlare di subselect o query innestate?
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
Quote:
SELECT DISTINCT (nome_Stazione) FROM Tabella union SELECT nome_Stazione, anno , giuliano from Tabella WHERE anno = 'anno' AND giuliano = 'giuliano'
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Quote:
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
EDIT non avevo capito quello che chiedevi
Ultima modifica di Brazorv : 04-07-2005 alle 19:00. |
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
|
Quote:
Ciao Mi spieghi xchè metti nome_stazione tra parentesi? che ci azzecca? Comunque la tua query è sempre sbagliata . Le tabelle unite DEVONO avere la stessa struttura. Quote:
2) Non puoi mettere nelle condizioni di join dei valori ma solo nomi di campo . Dove l'hai vista una cosa del genere? 3) Hai mai sentito parlare di selfjoin Ditemi una cosa. I vostri suggerimenti sono basati su una esperienza specifica o ....... tirate ad indovinare. Bye |
||
|
|
|
|
|
#12 | ||
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
Quote:
ne tuo primo post hai pure scritto questo Quote:
|
||
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
|
Quote:
Io ho suggerito 2 query: La prima (che come avevo sottolineato era fatta ad occhio SELECT DISTINCT A.nome_stazione, B.anno, B.giuliano FROM log AS A LEFT OUTER JOIN (SELECT nome_stazione , anno, giuliano FROM log WHERE anno='05' AND giuliano = '035') as B ON A.nome_stazione = B.nome_stazione La seconda invece funziona correttamente. Per quanto riguarda, però, la tua osservazione sul fatto che la chiave primaria x definizione non può contenere valori null hai perfettemente ragione sempre che i campi in questione SIANO definiti chiave primaria nella struttura della tabella. Se fosse così la stessa domanda di leon sarebbe improponibile. Se il problema invece esiste possono esserci 2 possibilità: La prima è che quei campi vengano di fatto utilizzati come chiavi primarie senza essere definiti nella struttura della tabella come tali. La seconda è che invece i campi contengano stringhe nulle ("") . In questo caso nella query che ho proposto basta cambiare 'is null' con '=""'. Scusa se ti ho dato prima l'impressione di essere un saputello Per curiosità ho provato as eseguirla in access nel db di esempio che mi sono costruito x verificare le query che avevo suggerito e il risultato è stato prima un msg di errore poi addirittura la chiusura del programma . Evidentemente access non l'ha gradita Bye |
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
la tua ultima query è corretta (nella prima mancavano le parentesi), ed è perfettamente equivalente a quella di kk3z. io le ho provate su postgres.
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
|
Quote:
In effetti è una grande comodità. C'è sempre qualcosa da imparare. Ciao e grazie |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:10.











. Evidentemente access non l'ha gradita








