Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-07-2005, 14:27   #1
leon84
Senior Member
 
L'Avatar di leon84
 
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 ???
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 15:14   #2
maulattu
Senior Member
 
L'Avatar di maulattu
 
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'
Attenzione che "union" automaticamente non considera gli elementi duplicati. Se ti interessa tener conto di elementi duplicati usa "union all".
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
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 15:14   #3
leon84
Senior Member
 
L'Avatar di leon84
 
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
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 15:17   #4
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Quote:
Originariamente inviato da maulattu
Codice:
SELECT DISTINCT (nome_Stazione) FROM Tabella

union 

SELECT nome_Stazione, anno , giuliano from (nome_Stazione) WHERE anno = 'anno' AND giuliano = 'giuliano'
Attenzione che "union" automaticamente non considera gli elementi duplicati. Se ti interessa tener conto di elementi duplicati usa "union all".
La parte in grassetto te l'eri dimenticata...
Quindi la query completa e corretta come diviene ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 16:05   #5
glb
Senior Member
 
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
Quote:
Originariamente inviato da leon84
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
Ciao

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 non mi sembra possa funzionare xchè in una union le query/tabelle che si vogliono unire devono avere la stessa struttura cioè gli stessi campi (almeno credo).

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
glb è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 16:50   #6
kk3z
Senior Member
 
L'Avatar di kk3z
 
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.
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 17:08   #7
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Quote:
Originariamente inviato da kk3z


1) non puoi fare due select in una query
Uhm?
Mai sentito parlare di subselect o query innestate?
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 17:20   #8
maulattu
Senior Member
 
L'Avatar di maulattu
 
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
Quote:
Originariamente inviato da leon84
Quindi la query completa e corretta come diviene ?
così:

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
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 18:22   #9
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Quote:
Originariamente inviato da maulattu
così:

SELECT DISTINCT (nome_Stazione) FROM Tabella
union
SELECT nome_Stazione, anno , giuliano from Tabella WHERE anno = 'anno' AND giuliano = 'giuliano'
L'union la puoi applicare solo su insiemi uguali..
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2005, 18:29   #10
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
EDIT non avevo capito quello che chiedevi

Ultima modifica di Brazorv : 04-07-2005 alle 19:00.
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2005, 08:29   #11
glb
Senior Member
 
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
Quote:
Originariamente inviato da maulattu
così:

SELECT DISTINCT (nome_Stazione) FROM Tabella
union
SELECT nome_Stazione, anno , giuliano from Tabella WHERE anno = 'anno' AND giuliano = 'giuliano'

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:
Originariamente inviato da kk3z


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)
1) come diceva giustamente beppe le subselect (o sottoquery) sono assolutamente ammissibili in sql anche se, in alcuni casi, (es. access) è necessario metterle tra parentesi.
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
glb è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2005, 09:34   #12
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
Quote:
Ditemi una cosa. I vostri suggerimenti sono basati su una esperienza specifica o ....... tirate ad indovinare.
ma hai provato ad eseguire la tua query? è sbagliata sintatticamente, kk3 ha corretto i tuoi errori e la sua funziona bene. Quando usi i join non devi fare una select nella seconda tabella. Devi specificare la seconda tabella + la condizione di join + la clausola WHERE se lo vuoi.
ne tuo primo post hai pure scritto questo
Quote:
Select nome_stazione, anno, giuliano
FROM log
where

(nome_stazione is null) OR (anno is null) OR (giuliano is Null)
ma se nome_stazione, anno, giuliano sono la chiave primaria come possono essere null?
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2005, 10:42   #13
glb
Senior Member
 
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
Quote:
Originariamente inviato da Brazorv
ma hai provato ad eseguire la tua query? è sbagliata sintatticamente, kk3 ha corretto i tuoi errori e la sua funziona bene. Quando usi i join non devi fare una select nella seconda tabella. Devi specificare la seconda tabella + la condizione di join + la clausola WHERE se lo vuoi.
ne tuo primo post hai pure scritto questo

ma se nome_stazione, anno, giuliano sono la chiave primaria come possono essere null?
Allora.... Ricapitoliamo.

Io ho suggerito 2 query:

La prima (che come avevo sottolineato era fatta ad occhio ) serviva solo x spiegare l'errore di non aver aggiunto nella select della sottoquery da Joinare con un selfjoin alla tabella il nome del campo utilizzato come chiave di join. In effetti non l'avevo provata (era solo un esempio) c'era qualche errore di sintassi. La query corretta e funzionante (provata in access 2002) sarebbe:

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 non ne avevo l'intenzione ma sinceramente continuo a non capire perchè continui a sostenere che la query proposta da kk3z sia corretta ed abbia corretto i miei errori.

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
glb è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2005, 10:57   #14
Brazorv
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.
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 05-07-2005, 11:39   #15
glb
Senior Member
 
Iscritto dal: Jun 2001
Città: Palermo
Messaggi: 206
Quote:
Originariamente inviato da Brazorv
la tua ultima query è corretta (nella prima mancavano le parentesi), ed è perfettamente equivalente a quella di kk3z. io le ho provate su postgres.
Beh! Se è così significa che la possibilità di mettere valori puntuali piuttosto che nomi di campo nelle chiavi di join c'è ma dipende dal 'dialetto 'sql' utilizzato. (con jet sql di access non sembra possibile )

In effetti è una grande comodità. . Sarei curioso di sapere se è previsto nel sql standard.

C'è sempre qualcosa da imparare.

Ciao e grazie
glb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Xiaomi 17: ecco il prezzo europeo del to...
Google fa tremare l'industria dei videog...
Gli sviluppatori 'abbandonano' Xbox: il ...
Galaxy S27 Ultra, è già te...
PlayStation Portal con display OLED: Son...
POCO X8 Pro e Pro Max sono quasi pronti:...
OpenAI ha bisogno di nuovi fondi: NVIDIA...
Mese nuovo, rinnovo delle offerte Amazon...
Accessori auto imperdibili su Amazon: pu...
Gli utenti iPhone possono ridurre la pr...
Come fare affari con l'usato garantito d...
Il miglior tablet di tutta Amazon, DOOGE...
Gli smartphone in super offerta su Amazo...
Produttori di memoria più severi ...
WhatsApp Business, Meta introduce costi ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v