|
|
|
![]() |
|
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 15: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 18: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 ![]() ![]() ![]() 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 ![]() ![]() 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: 01:04.