|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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 |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Provincia di Lecco
Messaggi: 2196
|
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 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
|
|
|
|
|
|
#5 |
|
Senior Member
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;
__________________
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 |
|
|
|
|
|
#6 |
|
Senior Member
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 |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Quote:
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); 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. |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2006
Città: Provincia di Lecco
Messaggi: 2196
|
ho trovato la soluzione!
(modificando un po' la query suggerita da Kralizek) Quote:
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 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:28.












(modificando un po' la query suggerita da Kralizek)








