Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
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: 2196
[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: 2196
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: 2196
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: 2196
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


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Tesla cambia idea: è in arrivo l'...
Anche Firefox punta sull'intelligenza ar...
Stop alle super-accelerazioni delle auto...
Osservatorio AGCOM: sempre più ac...
Sempre più IA su Spotify: arrivan...
iMac M4 crolla a 1.199€ con risparmio di...
Nintendo Switch 2: in rilascio un nuovo ...
Core Ultra 9 290K Plus, Core Ultra 7 270...
Prezzo Black Friday per le super cuffie ...
Crollano i prezzi della cuffie Beats col...
ASUS ROG Matrix RTX 5090 costa 4000 doll...
Grazie ai dati di ESA il calcolo della t...
Rilasciati nuovi video e immagini della ...
Gli astronauti cinesi di Shenzhou-20 son...
Mai così tanti gas serra: il 2025...
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: 16:28.


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