Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-11-2008, 20:10   #1
Berseker86
Senior Member
 
L'Avatar di Berseker86
 
Iscritto dal: Jan 2006
Città: Provincia di Lecco
Messaggi: 2204
[Mysql] consiglio su conteggio (anche in caso di 0 record)

Ciao a tutti, vi espongo un piccolo problema che ho con un progettino che sto facendo..

in pratica mi trovo ad avere due tabelle, una con una lista di clienti (e il loro id), l'altra con una lista di "prestiti", ognuno caratterizzato da un collegamento via chiave esterna all'id del cliente medesimo..

ebbene, vorrei visualizzare una tabella del tipo

| Nome cognome cliente | Numero Prestiti in atto |

e ce l'avrei anche fatta, l'unico problema è che non appaiono i nomi dei clienti che in quel momento non hanno nessun prestito, io invece vorrei che apparissero nella lista con uno "0" nella colonna numero prestiti. Se qualcuno può darmi una mano.. grazie mille
__________________

Main PC:
CPU Intel i5-3470 CPU @3.20GHz \\ MB: ASRock Z77 Pro4-M \\ RAM 4x4GB DDR@1666MHz \\ VGA Tahiti LE [Radeon HD 7870 XT - 2GB] \\ Case Antec One

Berseker86 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 20:22   #2
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da Berseker86 Guarda i messaggi
Ciao a tutti, vi espongo un piccolo problema che ho con un progettino che sto facendo..

in pratica mi trovo ad avere due tabelle, una con una lista di clienti (e il loro id), l'altra con una lista di "prestiti", ognuno caratterizzato da un collegamento via chiave esterna all'id del cliente medesimo..

ebbene, vorrei visualizzare una tabella del tipo

| Nome cognome cliente | Numero Prestiti in atto |

e ce l'avrei anche fatta, l'unico problema è che non appaiono i nomi dei clienti che in quel momento non hanno nessun prestito, io invece vorrei che apparissero nella lista con uno "0" nella colonna numero prestiti. Se qualcuno può darmi una mano.. grazie mille
provato con un outer join?
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 20:31   #3
Berseker86
Senior Member
 
L'Avatar di Berseker86
 
Iscritto dal: Jan 2006
Città: Provincia di Lecco
Messaggi: 2204
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
provato con un outer join?
ti ringrazio della dritta, ora vado a informarmi meglio su questa outer join..
__________________

Main PC:
CPU Intel i5-3470 CPU @3.20GHz \\ MB: ASRock Z77 Pro4-M \\ RAM 4x4GB DDR@1666MHz \\ VGA Tahiti LE [Radeon HD 7870 XT - 2GB] \\ Case Antec One

Berseker86 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 20:38   #4
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da Berseker86 Guarda i messaggi
ti ringrazio della dritta, ora vado a informarmi meglio su questa outer join..
figurati, se non trovi niente chiedi pure...
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 20:56   #5
Berseker86
Senior Member
 
L'Avatar di Berseker86
 
Iscritto dal: Jan 2006
Città: Provincia di Lecco
Messaggi: 2204
rieccomi, perchè nonostante abbia cercato di utilizzare questa left outer join, non riesco a fare quello che vorrei. Preciso meglio il mio problema.

Tabella Clienti
Id (primary key)
Nome
Cognome

Tabella Prestiti
Id
Id_cliente
id_libro
data_inizio
data_fine


io voglio una tabella che mi dia una lista dei clienti (TUTTI) e il numero dei prestiti che hanno in corso (cioè quelli con la data_fine "NULL"), eventualmente con un numero pari a 0 se in questo momento non hanno prestiti in atto.
ho provato con
Codice:
SELECT nome, cognome, count(*) as numero_prestiti FROM cliente LEFT OUTER JOIN prestiti ON
 cliente.id = prestiti.id_cliente WHERE data_fine IS NULL GROUP BY cliente.id;
ma non mi escono 2 dei 7 clienti che ho attualmente nella tabella clienti, proprio quelli che effettivamente non hanno nessun prestito attivo (ne hanno qualcuno, ma già concluso (con data_fine NON NULL).
__________________

Main PC:
CPU Intel i5-3470 CPU @3.20GHz \\ MB: ASRock Z77 Pro4-M \\ RAM 4x4GB DDR@1666MHz \\ VGA Tahiti LE [Radeon HD 7870 XT - 2GB] \\ Case Antec One

Berseker86 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 21:48   #6
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Qualcosa tipo:

Codice:
SELECT C.Nome, C.Cognome, COUNT(P.ID) AS Prestiti
FROM Clienti AS C LEFT JOIN Prestiti AS P ON C.ID = P.ID_Cliente
GROUP BY C.Nome, C.Cognome, P.ID
ti salta le righe vuote?
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 21:58   #7
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da Berseker86 Guarda i messaggi
ma non mi escono 2 dei 7 clienti che ho attualmente nella tabella clienti, proprio quelli che effettivamente non hanno nessun prestito attivo (ne hanno qualcuno, ma già concluso (con data_fine NON NULL).
Credo che la soluzione stia nella tua ultima frase, e nel fatto che tu applichi la clausola "WHERE data_fine IS NULL": a causa della left join, la tua tabella contiene anche i clienti che non hanno prestiti, però la clausola where filtra di nuovo via proprio quelli, quindi non te li ritrovi più nel risultato finale.

Ecco la prima idea che mi viene in mente (forse non è la più "furba", ma dovrebbe funzionare):

Codice:
(SELECT nome, cognome, count(*) as numero_prestiti FROM cliente LEFT OUTER JOIN prestiti ON
 cliente.id = prestiti.id_cliente WHERE data_fine IS NULL GROUP BY cliente.id)
UNION
(SELECT nome, cognome, 0 as numero_prestiti FROM cliente WHERE cliente.id NOT IN
(SELECT prestiti.id_cliente WHERE data_fine IS NULL)
GROUP BY cliente.id);
In pratica ho spezzato la query in due query distinte unite da "UNION", la prima è la tua vecchia query, che da un elenco di tutti i clienti con prestiti attivi e il numero dei loro prestiti, eliminando dal conteggio tutti i prestiti già finiti. La seconda query trova tutti gli utenti che non hanno prestiti in corso, semplicemente scegliendo tutti i clienti il cui id non è mai associato ad un prestito in corso, cioè tutti quelli che non hanno prestiti in corso.

Però non mi ricordo se la sintassi per inserire un campo costante sia quella (lo "0" che ho messo in cima).

Naturalmente il risultato non è molto ordinato, ma questo lo puoi sistemare eventualmente in seguito.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN

Ultima modifica di Mixmar : 05-11-2008 alle 22:01.
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 06-11-2008, 07:50   #8
Berseker86
Senior Member
 
L'Avatar di Berseker86
 
Iscritto dal: Jan 2006
Città: Provincia di Lecco
Messaggi: 2204
ho trovato la soluzione! (modificando un po' la query suggerita da Kralizek)

Quote:
SELECT nome, cognome, COUNT(prestiti.id) as Prestiti FROM cliente LEFT JOIN prestiti ON cliente.id = prestiti.id_cliente AND data_fine IS NULL GROUP BY cliente.id;
mi restituisce correttamente la lista dei clienti, compresi quelli con 0 prestiti!
grazie mille a tutti quelli che mi hanno indirizzato verso la retta via!
__________________

Main PC:
CPU Intel i5-3470 CPU @3.20GHz \\ MB: ASRock Z77 Pro4-M \\ RAM 4x4GB DDR@1666MHz \\ VGA Tahiti LE [Radeon HD 7870 XT - 2GB] \\ Case Antec One

Berseker86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
Invia il tuo nome su Titano, la luna di ...
Starship: Ship 42 e Super Heavy Booster ...
Chrome, meno tab switching con la nuova ...
L'IA agentica spopola fra le aziende, ma...
ASUS UGen300 arriva in Italia a 299 euro...
Iliad aggiorna la gamma di offerte per I...
Stop ai social per i minori, perché Brux...
Google Chrome integra Gemini in Enhanced...
Meta lancia Waddle World e Style Sketch,...
Jensen Huang nella rete dello spionaggio...
Valve non vieterà i giochi creati...
3 milioni di euro di redditi non dichiar...
XREAL AURA: gli occhiali XR via cavo con...
E-Plato, 3 milioni per sviluppare Socrat...
Alexa Home Map trasforma la casa in una ...
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: 20:52.


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